详解OpenCV和PIL读取和显示图像的差异
本博客演示使用OpenCV和PIL读取和显示图像的差异。
首先来看一下原始的bgr图像 src.jpg
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)
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)
由此可见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")
由此可见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)
所以进一步坐实了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)
可见PIL读入rgb顺序图片后虽然为RGB格式,但是其实通道顺序为BGR格式图片
总结:
到此这篇关于详解OpenCV和PIL读取和显示图像的差异的文章就介绍到这了,更多相关OpenCV和PIL读取和显示图像 内容请搜索hwidc以前的文章或继续浏览下面的相关文章希望大家以后多多支持hwidc!
【本文来源:黄石网站优化 http://www.5h5q.com/huangshiseo/复制请保留原URL】