问题
对于一张lenna图,有时候显示是原始的样子:
但有时候显示是
问题是通道数顺序;对于彩色图片,一般而言是由RGB三通道组成,不同的是通道顺序的问题导致显示的颜色问题,比如RGB BGR等;
解决
这里明确一下
- 使用
cv2.imread
读取图像时候,获得的图像顺序是BGR顺序 - 使用
cv2.imshow
显示图像时候,要求图像顺序是BGR顺序 - 使用
plt.imshow
显示图像时候,要求图像顺序是RGB顺序
BGR与RGB的互换,可以使用cv2.cvtColor
进行转换:
# bgr to rgb
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# rgb to bgr
img_bgr = cv2.cvtColor(img_rgb, cv2.COLOR_RGB2BGR)
展示
cv2.imread 和 cv2.imshow
img = cv2.imread('../image/lenna.png')
img.shape # img is bgr
cv2.imshow('png', img)
cv2.waitKey(0)
cv2.imshow('rgb', img_rgb) # img_rbg is rgb
cv2.waitKey(0)
plt.imshow
plt.imshow(img)
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.imshow(img_rgb)