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() # 任意键关闭

显示正常:

opencv PIL读取图像得到的图像格式_第1张图片

2、使用opencv进行读取,plt进行显示

cv2.imread和plt.imshow()

img = cv2.imread('demo.jpg')
plt.imshow(img)

发现颜色改变了,因为opencv读取的顺序是gbr,imshow显示的顺序是rgb

opencv PIL读取图像得到的图像格式_第2张图片

3、我们对三个通道进行调换,再用plt显示

直接使用cv2.cvtColor进行转换:

rgb_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.imshow(rgb_img)

或者对第三个维度进行逆序切片:

img = img[:, :, ::-1]
plt.imshow(img)

或者:

b, g, r = cv2.split(img)
rgb_img = cv2.merge([r, g, b])
plt.imshow(rgb_img)

此时颜色显示正常:

opencv PIL读取图像得到的图像格式_第3张图片

4、使用PIL读取,plt显示

img1 = Image.open('E:/notebook/demo.jpg')
plt.imshow(img1)

显示正常:
opencv PIL读取图像得到的图像格式_第4张图片

HWC和CHW

opencv读取的文件形式为:HWC

opencv PIL读取图像得到的图像格式_第5张图片
可以使用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

你可能感兴趣的:(#,Python,opencv,计算机视觉,python)