为什么用Python的openCV读取图片与PIL读取的图片像素值会不一样?
我首先尝试用PIL读取同一张图片,img1=Image.open('000008.jpg')print(img1.mode)print(img1.getpixel((25...
我首先尝试用PIL读取同一张图片,
img1 = Image.open('000008.jpg')
print(img1.mode)
print(img1.getpixel((252,252)))
print(img1.size)
输出对角线(252,252)位置的像素值为:(0, 4, 40)
再用opencv读取相同图片,已经考虑转换为RGB通道的情况下,输出同样位置的像素值,
img2 = cv2.imread('000008.jpg')[..., ::-1]
# img2 = cv2.cvtColor(img2,cv2.COLOR_BGR2RGB)
print(img2[252][252])
print(img2.shape)
结果却为:[ 0 4 38]
接着,我又将PIL转换为numpy格式,img1 = np.array(img1,dtype=np.float32)
结果与PIL一致,为(0, 4, 40),和opencv依然不同,
有没有大神能够帮助解答一下为啥相同位置的像素值不一样呢?有没有办法解决这个问题? 展开
img1 = Image.open('000008.jpg')
print(img1.mode)
print(img1.getpixel((252,252)))
print(img1.size)
输出对角线(252,252)位置的像素值为:(0, 4, 40)
再用opencv读取相同图片,已经考虑转换为RGB通道的情况下,输出同样位置的像素值,
img2 = cv2.imread('000008.jpg')[..., ::-1]
# img2 = cv2.cvtColor(img2,cv2.COLOR_BGR2RGB)
print(img2[252][252])
print(img2.shape)
结果却为:[ 0 4 38]
接着,我又将PIL转换为numpy格式,img1 = np.array(img1,dtype=np.float32)
结果与PIL一致,为(0, 4, 40),和opencv依然不同,
有没有大神能够帮助解答一下为啥相同位置的像素值不一样呢?有没有办法解决这个问题? 展开
展开全部
的确是不一样的。
以下是我用两种方法对一张图片做的差值。解决方案暂时没有想到。建议还是只用一种读取方式。
[[[254 1 0]
[254 1 0]
[254 1 0]
...
[ 0 0 4]
[ 0 255 3]
[ 0 0 1]]
[[ 0 0 0]
[255 1 0]
[ 0 0 0]
...
[ 0 255 2]
[ 0 255 2]
[255 1 0]]
[[ 0 0 0]
[254 0 1]
[ 0 0 0]
...
[ 0 0 2]
[ 0 255 2]
[ 0 0 0]]
...
[[ 0 0 0]
[ 0 0 0]
[ 0 0 0]
...
[ 0 0 0]
[ 0 0 0]
[ 0 0 0]]
[[ 0 0 0]
[ 0 0 0]
[ 0 0 0]
...
[ 0 0 0]
[ 0 0 0]
[ 0 0 0]]
[[ 0 0 0]
[ 0 0 0]
[ 0 0 0]
...
[ 0 0 0]
[ 0 0 0]
[ 0 0 0]]]
以下是我用两种方法对一张图片做的差值。解决方案暂时没有想到。建议还是只用一种读取方式。
[[[254 1 0]
[254 1 0]
[254 1 0]
...
[ 0 0 4]
[ 0 255 3]
[ 0 0 1]]
[[ 0 0 0]
[255 1 0]
[ 0 0 0]
...
[ 0 255 2]
[ 0 255 2]
[255 1 0]]
[[ 0 0 0]
[254 0 1]
[ 0 0 0]
...
[ 0 0 2]
[ 0 255 2]
[ 0 0 0]]
...
[[ 0 0 0]
[ 0 0 0]
[ 0 0 0]
...
[ 0 0 0]
[ 0 0 0]
[ 0 0 0]]
[[ 0 0 0]
[ 0 0 0]
[ 0 0 0]
...
[ 0 0 0]
[ 0 0 0]
[ 0 0 0]]
[[ 0 0 0]
[ 0 0 0]
[ 0 0 0]
...
[ 0 0 0]
[ 0 0 0]
[ 0 0 0]]]
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询