为了读个图,再存个图我容易么我,cv2.imread还把图整蓝了,心态崩了。但是本着不可能就我一人遇到这种问题的心态,我百度了,终于获救。然后pycharm上plt.imshow()好好的,服务器中看黑了,这又黑了,。然后又百度了,又好了,然后服务器上看它又蓝了,蓝色今晚是和我杠上了么,可谓是一波三折,谁都不准笑。
解决蓝色:https://jenslee.blog.csdn.net/article/details/101598596?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2.control
解决黑色:https://blog.csdn.net/weixin_43955530/article/details/94310253
原图(RGB格式):

一、cv2.imread()将图片以BGR格式读入

cv2.imread(img.path)读入之后,plt.show()的结果:

此时只需要把图转换成RGB即可,也就是将B和R换个位置,也就是将图像表示色彩通道的位置的B和R换个顺序。

img = img[:, :, [2,1,0]]

这时候,plt.show()就会显示原图的样子(RGB)。

二、cv2.imwrite()将还原格式保存

在经历了前面的颠倒之后,cv2.imwrite(saveimg.path)保存图像,在服务器上查看到的图首先是全黑的。
这是因为图像像素都被标准化到[0,1]了,此时只需要将像素值还原回[0,255]:

img = img * 255

还原后这时服务器上的图不黑了,但是你会发现是蓝色的。但是cv2.imwrite()之前plt.show()明明还是RGB格式的图,说明cv2.imwrite()操作又将色彩通道的第一通道和第三通道对调了,也就是我们换好的RGB,又经历了img = img[:, :, [2,1,0]],变回了BRG。

所以注释掉之前加入的img = img[:, :, [2,1,0]],尽管plt.show()看着是蓝色的,但是最终保存的图像仍然是正常的RGB图。

本文地址:https://blog.csdn.net/weixin_43917335/article/details/110143813