OpenCV和matplotlib中imread()函数对图像读取时的色彩通道问题

OpenCV和matplotlib中imread()函数对图像读取的细节

作者:小初
时间: 2021-05-09


今天在处理图像时,使用matplotlib.imread()读取图片,使用cv2.imwrite()再写入到新的图片,此时发现程序编译时,matplotlib.show()展示出来的图片是正常的,但是新写入的图片效果明显不对,明显感觉各通道色值发生了变化。

OpenCV和matplotlib中imread()函数对图像读取时的色彩通道问题 原图

OpenCV和matplotlib中imread()函数对图像读取时的色彩通道问题

处理后的图片

原来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

上一篇:OpenCV加载彩色图像及灰度图像


下一篇:【基本运算】基于matlab图像基本运算【含Matlab源码 1009期】