OpenCV提供了150多种色彩空间转换方法,但是我们只研究其中两个最常用的:BGR ↔ Gray 和 BGR ↔ HSV.
如果需要查看其他方法也可以运行以下代码
import cv2 as cv
flags = [i for i in dir(cv) if i.startswith('COLOR_')]
print( flags )
现在介绍学习的函数及其参数
cv.cvtColor(src, code, dst, dstCn)
src:输入图像,可以是8位无符号、16位无符号或单精度浮点类型的图像。
code:颜色空间转换代码,这个代码指定了要进行的颜色空间转换类型。OpenCV提供了多种颜色空间转换的选项,如COLOR_BGR2GRAY
(BGR转灰度)、COLOR_BGR2HSV
(BGR转HSV)等。
dst:(可选)输出图像,它将与输入图像src
具有相同的大小和深度。如果未提供,则会创建一个新的图像用于存储转换结果。
dstCn:(可选)目标图像中的通道数。如果此参数设置为0,则通道数将从src
和code
自动推断得出。
示例代码
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
img = cv.imread('p.jpg')
hsv = cv.cvtColor(img, cv.COLOR_BGR2HSV)
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
fig, axes = plt.subplots(nrows=1, ncols=3, figsize=(10, 8), dpi=100)
axes[0].imshow(img[:, :, ::-1])
axes[0].set_title('原图')
axes[1].imshow(hsv[:, :, ::-1])
axes[1].set_title('HSV')
axes[2].imshow(gray, cmap=plt.cm.gray)
axes[2].set_title('Gray')
输出
## 学习笔记,欢迎各位大佬指错!