opencv PIL读取图像得到的图像格式
文章目录
- opencv读取图像
- rbg格式和gbr
- HWC和CHW
opencv读取图像
cv2.imread()
# Load an color image in grayscale
img = cv2.imread('messi5.jpg', 0)
- cv2.IMREAD_COLOR : 加载彩色图像,是一个默认值,可以用数字1代替
- cv2.IMREAD_GRAYSCALE : 加载图像为灰色模式,可以用数字0代替
- cv2.IMREAD_UNCHANGED : 加载包括alpha通道的图像
cv2.imshow(),显示图像
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.imwrite(),写入图像
cv2.imwrite('messigray.png',img)
rbg格式和gbr
opencv读取的图像格式是gbr,PIL读取的图像格式是rgb
1、使用opencv读取和显示
使用cv2.imread()和cv2.imshow()
img = cv2.imread('demo.jpg')
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows() # 任意键关闭
显示正常:
2、使用opencv进行读取,plt进行显示
cv2.imread和plt.imshow()
img = cv2.imread('demo.jpg')
plt.imshow(img)
发现颜色改变了,因为opencv读取的顺序是gbr,imshow显示的顺序是rgb:
3、我们对三个通道进行调换,再用plt显示
将第三个维度进行逆序切片:
img = img[:, :, ::-1]
plt.imshow(img)
或者:
b, g, r = cv2.split(img)
rgb_img = cv2.merge([r, g, b])
plt.imshow(rgb_img)
此时颜色显示正常:
4、使用PIL读取,plt显示
img1 = Image.open('E:/notebook/demo.jpg')
plt.imshow(img1)
显示正常:
HWC和CHW
opencv读取的文件形式为:HWC
可以使用transpose将图像转为CHW
img1 = img.transpose((2, 0, 1))
参考资料:
https://youcans.blog.csdn.net/article/details/121168935
https://blog.csdn.net/haiyanp_p/article/details/118294120
https://www.likecs.com/show-204512169.html
http://www.zzvips.com/article/205586.html
https://www.cnblogs.com/AntonioSu/p/12021384.html