介绍
欢迎来到 OpenCV-Python 色彩空间教程!
色彩空间是一种表示图像中颜色通道的方式。有几种不同的色彩空间,但最常见的三种是:
- BGR(Blue, Green, Red):OpenCV 默认使用的色彩空间。
- Gray:图像的灰度表示。
- HSV(Hue, Saturation, Value):颜色的圆柱坐标表示。
在本教程中,我们将重点介绍如何在 BGR、Gray 和 HSV 色彩空间之间转换图像。
欢迎来到 OpenCV-Python 色彩空间教程!
色彩空间是一种表示图像中颜色通道的方式。有几种不同的色彩空间,但最常见的三种是:
在本教程中,我们将重点介绍如何在 BGR、Gray 和 HSV 色彩空间之间转换图像。
要在色彩空间之间转换图像,我们使用 cv.cvtColor() 函数。首先,导入必要的库并读取一张图像:
在终端中输入以下命令以打开 Python shell:
python3
使用 cv.imread() 函数读取默认文件夹中准备的图像 image.jpg。
import cv2 as cv
import numpy as np
## 读取图像
image = cv.imread('image.jpg')
要将图像从 BGR 转换为 Gray,使用 cv.COLOR_BGR2GRAY 标志:
## 将图像转换为灰度图
gray_image = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
要将图像从 BGR 转换为 HSV,使用 cv.COLOR_BGR2HSV 标志:
## 使用 HSV 色彩空间。HSV 色彩空间主要用于目标跟踪
hsv_image = cv.cvtColor(image, cv.COLOR_BGR2HSV)
要显示原始图像和转换后的图像,使用 cv.imwrite() 函数:
## 将图像保存到指定文件
cv.imwrite('image.jpg', image)
cv.imwrite('gray_image.jpg', gray_image)
cv.imwrite('hsv_image.jpg', hsv_image)
要从图像中提取特定颜色的物体,可以使用 cv.inRange() 函数。在这个例子中,我们将从图像中提取一个蓝色的物体。
首先,在 HSV 色彩空间中定义蓝色的下限和上限:
## 蓝色在 HSV 中大约为 240 度(360 度制)。
## OpenCV-HSV 中的 Hue 范围为 0-180,以便将值存储在 8 位中。
## 因此,蓝色在 OpenCV-HSV 中表示为 H 值约为 240 / 2 = 120。
## 为了正确检测蓝色,可以选择以下值:
blue_lower = np.array([100, 150, 0], np.uint8)
blue_upper = np.array([140, 255, 255], np.uint8)
对 HSV 图像进行阈值处理,以仅获取蓝色部分:
## 蓝色掩码
blue_mask = cv.inRange(hsv_image, blue_lower, blue_upper)
将掩码应用到原始图像中以提取蓝色物体:
## 使用掩码提取蓝色物体
blue_object = cv.bitwise_and(image, image, mask=blue_mask)
显示原始图像和提取的蓝色物体:
## 将图像保存到指定文件
cv.imwrite('blue_object.jpg', blue_object)
在本教程中,我们介绍了 OpenCV-Python 色彩空间的基础知识。通过掌握这些知识,你现在可以处理不同的色彩空间,并将它们应用于各种图像处理任务中。你还可以尝试 OpenCV 支持的其他色彩空间,例如 LAB 或 YCrCb。