OpenCV和matplotlib中imread()函数对图像读取的细节
作者:小初
时间: 2021-05-09
今天在处理图像时,使用matplotlib.imread()读取图片,使用cv2.imwrite()再写入到新的图片,此时发现程序编译时,matplotlib.show()展示出来的图片是正常的,但是新写入的图片效果明显不对,明显感觉各通道色值发生了变化。
原图
处理后的图片
原来OpenCV读进来的图像,通道顺序为BGR, 而matplotlib的顺序为RGB,因此在在调用cv2.imwrite()之前需要进行需要将读取的图像数组矩阵有RGB三通道变换为BGR三通道。
img = after_img[:, :, ::-1]
知道问题所在后,修改一下代码后即解决问题。
img = cv2.imread("solidWhiteRight_before.jpg")
print("start to process the image....")
after_img = process_an_image(img)
cv2.imwrite('solidWhiteRight_after.jpg', after_img)
print("show you the image....")
img = after_img[:, :, ::-1] #通道变换
plt.imshow(img)
plt.show()
图片3
问题解决
参考https://www.cnblogs.com/visionfeng/p/6094423.html