新手使用CV2.imread后,直接显示,得到下面这种蓝色的图片,与原图差异很大:

CV2的imread默认存储的颜色空间顺序是BGR,与matplot显示用的imshow的颜色顺序RGB正好相反,那么怎么转换呢?
经常使用的有
方法1:
myimg=myimg[...,::-1]
这种方法初学者一般看不懂,::-1表示的是逆序,前面...我也不知道什么意思,官方给出的转换就是这样。
方法2:
使用库函数,简单易懂,但是不知道内部怎么搞的:
myimg = cv2.cvtColor(myimg,cv2.COLOR_BGR2RGB)
方法3:
也是我的原创方法,其实就是使用索引将[:,:,0]和[:,:,2]互换位置即可,该方法可以展示BGR到RGB的转换,即是将R通过和B通过互换位置即可。
index = [2,1,0] myimg = myimg[:,:,index]

显示正常。
本文介绍如何解决OpenCV读取图片后颜色显示异常的问题。CV2默认使用BGR颜色空间,而matplotlib的imshow则使用RGB。文章提供三种转换方法:使用numpy的逆序切片、cv2的cvtColor函数及原创的索引交换法。

被折叠的 条评论
为什么被折叠?



