图像的相关操作
需要注意的是,OpenCV读入图像的顺序是g、b、r
的顺序,而像matplotlib这样的图像库读入图像的顺序是正常的r、g、b
,所以如果想要用opencv读取图像而用matplotlib.plotlib
显示时,就需要考虑一个通道翻转的问题。详情参见Stack Overflow上的讨论。
1.读取图片代码
def openCV_image_ops():
img = cv2.imread("bear.jpg")
# print(img.shape) # (301, 400, 3)
b, g, r = cv2.split(img)
# print(b.shape) #(301, 400)
# 重组后的图片
img2 = cv2.merge([r, g, b])
plt.subplot(121)
plt.xticks([]) # 隐藏x、y轴
plt.yticks([])
plt.imshow(img)
plt.subplot(122)
plt.xticks([]) # 隐藏x、y轴
plt.yticks([])
plt.imshow(img2)
plt.show()
遇到的问题
- b, g, r = cv2.split(img) ValueError: not enough values to unpack (expected 3, got 0)
出现这个问题我后,我查看了一下split相关代码,我寻思img的确是个3维的序列呀?但是报错说里面是空的&