python图片对比模块_Python中Opencv和PIL.Image读取图片的差异对比

近日,在进行深度学习进行推理的时候,发现不管怎么样都得不出正确的结果,再仔细和正确的代码进行对比了后发现原来是Python中不同的库读取的图片数组是有差异的。

image = np.array(Image.open(image_file).convert('RGB'))

image = cv2.imread(image_file)

上面第一行代码就是导致错误出现的原因,我把代码改成第二行代码模型就能够正确的推理了。(巨坑),以后谨记,在使用Python读取图片的时候最好使用OpenCV来读取。

imshow

1、Opopencv  : cv2.imshow()采用BGR模式,通过cv2.imread()读取;

2、matplotlib.pyplot  : plt.imshow() 采用RGB模式,   通过plt.imread()读取;

3、PIL.Image :  img.show()  采用RGB模式, 通过Image.open()读取;img对图片对象

备注:通过cv2.VideoCapture方法来读取video的frame,得到的frame的通道顺序是BGR的!!!

下面一组图依次是:img、plt.imshow(cv_img)、Img_img.show()、plt.imshow(plt_img)

python图片对比模块_Python中Opencv和PIL.Image读取图片的差异对比_第1张图片

cv2(BGR)

#img为BGR通道

img = cv2.imread(img_path, mode) #mode = [1, 0, -1]依次表示彩色、灰度、彩色+alpha, 默认为1;

cv2.imshow('test', img)

cv2.waitKey(0)#保持图形界面,直到你在终端输入任意字符

cv2.destroyAllWindows()

PIL.Image(RGB)

img =Image.open(img_path)

img.show()

PIL.Image转Opencv

cv2_img = cv2.cvtColor(numpy.asarray(Img_img),cv2.COLOR_RGB2BGR)

Opencv转PIL.Image

pil_img = Image.fromarray(cv2.cvtColor(cv_img,cv2.COLOR_BGR2RGB))

你可能感兴趣的:(python图片对比模块)