详解OpenCV和PIL读取和显示图像的差异

本博客演示使用OpenCV和PIL读取和显示图像的差异。

首先来看一下原始的bgr图像 src.jpg

详解OpenCV和PIL读取和显示图像的差异

1. 使用cv2读取src.jpg并转为rgb格式的src_rgb.jpg并显示和保存

#首先读入并保存为rgb图像
src_path = \'C:\\\\Users\\\\Administrator\\\\Desktop\\\\cv2_PIL\\\\src.png\' # bgr
img = cv2.imread(src_path)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
cv2.imshow(\'src_rgb.png\', img)
cv2.imwrite(\'src_rgb.png\', img)
cv2.waitKey(5000)

详解OpenCV和PIL读取和显示图像的差异

2. 使用cv2读取src_rgb.jpg并显示, 发现仍为rgb格式

# 读入rgb格式的图像并保存
src_path = \'C:\\\\Users\\\\Administrator\\\\Desktop\\\\cv2_PIL\\\\src_rgb.png\' # rgb
img = cv2.imread(src_path)
cv2.imshow(\'src_rgb.png\', img)
cv2.waitKey(5000)

详解OpenCV和PIL读取和显示图像的差异

由此可见cv2读取bgr格式图片为bgr格式读入;读取rgb格式图片为rgb格式读入。

3. 使用PIL读取src.jpg并显示

# 使用PIL读取bgr格式图片并显示
src_path = \'C:\\\\Users\\\\Administrator\\\\Desktop\\\\cv2_PIL\\\\src.png\' # bgr
img = Image.open(src_path)#.convert(\"RGB\")
print(img.mode)
img.show(\"src.png\")

详解OpenCV和PIL读取和显示图像的差异

详解OpenCV和PIL读取和显示图像的差异

由此可见PIL读入bgr格式图片为读入后是rgb格式

4. 使用PIL读取src.jpg并转为numpy的array格式图片并显示

# 使用PIL读取bgr格式图片并显示
src_path = \'C:\\\\Users\\\\Administrator\\\\Desktop\\\\cv2_PIL\\\\src.png\' # bgr
img = Image.open(src_path)#.convert(\"RGB\")
print(img.mode)
img = np.array(img) # rgb
cv2.imshow(\"src.png\",img)
cv2.waitKey(5000)

详解OpenCV和PIL读取和显示图像的差异

所以进一步坐实了PIL读入bgr格式图片为读入后是rgb格式

5. 使用PIL读取rgb格式src_rgb.jpg并显示

# 使用PIL读取rgb格式图片并显示
src_path = \'C:\\\\Users\\\\Administrator\\\\Desktop\\\\cv2_PIL\\\\src_rgb.png\' # rgb
img = Image.open(src_path)#.convert(\"RGB\")
print(img.mode)
# img1 = img.load()
# print(img1[0,0])
#img.show()
img = np.asarray(img) # bgr
#print(img)
cv2.imshow(\"src_.png\",img)
cv2.waitKey(5000)

详解OpenCV和PIL读取和显示图像的差异

详解OpenCV和PIL读取和显示图像的差异

可见PIL读入rgb顺序图片后虽然为RGB格式,但是其实通道顺序为BGR格式图片

总结:

cv2读取BGR图片 img = cv2.imread(\’src.png\’),其中img为BGR通道顺序的图片
cv2读取RGB图片 img = cv2.imread(\’src.png\’),其中img为RGB通道顺序的图片
PIL读入BGR图片 img = Image.open(\’src.png\’),显示img为RGBA格式,其中img为RGBA通道顺序的图片; img = img.convert(\’RGB\’)后,img为RGBA通道顺序的图片
PIL读入RGB图片 img = Image.open(\’src_rgb.png\’),虽然显示img为RGB格式,但是img为通道顺序为BGR格式的图片。
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容