欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

使用cv2读图、存图、以及解决cv2.imread把图读蓝、存的图服务器看是黑的问题

程序员文章站 2022-07-03 20:35:57
为了读个图,再存个图我容易么我????,cv2.imread还把图整蓝了,心态崩了。但是本着不可能就我一人遇到这种问题的心态,我百度了,终于获救。然后pycharm上plt.imshow()好好的,服务器中看黑了,这又黑了,????。然后又百度了,又好了,然后服务器上看它又蓝了????,蓝色今晚是和我杠上了么????,可谓是一波三折,谁都不准笑。解决蓝色:https://jenslee.blog.csdn.net/article/details/101598596?utm_medium=distribut...

为了读个图,再存个图我容易么我????,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读图、存图、以及解决cv2.imread把图读蓝、存的图服务器看是黑的问题

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

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

使用cv2读图、存图、以及解决cv2.imread把图读蓝、存的图服务器看是黑的问题
此时只需要把图转换成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。
使用cv2读图、存图、以及解决cv2.imread把图读蓝、存的图服务器看是黑的问题
所以注释掉之前加入的img = img[:, :, [2,1,0]],尽管plt.show()看着是蓝色的,但是最终保存的图像仍然是正常的RGB图。

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