使用OpenCV加载图像时,默认使用BGR的格式,而使用matplotlib显示图像时又采用RGB的格式,因此显示图像时,会显得非常奇怪。
如以一张船的照片为例,原图如下:
使用OpenCV进行读取:
import cv2
import matplotlib.pyplot as plt
import numpy as np
ship_BGR = cv2.imread('ship.jpg',cv2.IMREAD_COLOR) # 第二个参数可以不写,默认值就是以彩色图像方式读取
plt.imshow(ship_BGR)
plt.show()
输出的图像结果:
可以很容易发现,这和原图的颜色差的非常多,这一切原因都在于读取channel的顺序,因此需要改变channel顺序。
方法一
ship_RGB_1 = ship_BGR[:,:,::-1] # BGR和RGB正好是顺逆序关系
plt.imshow(ship_RGB_1)
plt.show()
输出的图像结果:
方法二
ship_RGB_2 = cv2.cvtColor(ship_BGR, cv2.COLOR_BGR2RGB)
plt.imshow(ship_RGB_2)
plt.show()
输出的图像结果:
以上两种方法均适用于BGR图像转换为RGB图像,小伙伴们可根据自己的喜好各取所需。