跳到主要内容

颜色转换

使用 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_2 = cv2.cvtColor(ship_BGR, cv2.COLOR_BGR2RGB)
plt.imshow(ship_RGB_2)
plt.show()

References