📜  opencv python 将 rgb 转换为 hsv - Python (1)

📅  最后修改于: 2023-12-03 15:33:17.813000             🧑  作者: Mango

opencv python将RGB转换为HSV

如果您想进行颜色检测,那么RGB颜色空间可能不是最佳选择。相反,您应该考虑使用HSV颜色空间。HSV颜色空间使您能够更轻松地确定特定颜色的范围。在这篇文章中,我们将学习如何使用OpenCV和Python将RGB颜色空间转换为HSV颜色空间。

HSV简介

HSV颜色空间包括三个要素:Hue、Saturation和Value。Hue表示颜色,Saturation表示颜色的纯度,Value表示光的亮度。

Hue的取值范围是0-179,Saturation的取值范围是0-255,Value的取值范围是0-255。

转换RGB到HSV

转换RGB颜色空间到HSV颜色空间是非常简单的,只需要使用OpenCV的cv2.cvtColor()方法。

以下是一个简单的Python代码片段,将RGB图像转换为HSV图像:

import cv2

img = cv2.imread('image.jpg')

hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

在上面的代码中,我们首先使用cv2.imread()方法读取图像。接下来,我们使用cv2.cvtColor()方法将图像从BGR颜色空间转换为HSV颜色空间。

提取HSV中的颜色范围

现在,我们已经学会了如何将RGB颜色空间转换为HSV颜色空间。接下来,我们将学习如何从HSV颜色空间中提取颜色范围。

以下是一个Python代码片段,提取HSV范围内的蓝色:

import cv2
import numpy as np

img = cv2.imread('image.jpg')

hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

# 定义蓝色HSV范围
lower_blue = np.array([110,50,50])
upper_blue = np.array([130,255,255])

#提取颜色
mask = cv2.inRange(hsv_img, lower_blue, upper_blue)

#只保留原始颜色中蓝色的区域
res = cv2.bitwise_and(img, img, mask= mask)

在上面的代码中,我们首先定义了HSV颜色空间中蓝色的范围。然后,我们使用cv2.inRange()方法从HSV图像中提取出要检测的颜色。最后,我们使用cv2.bitwise_and()方法将我们提取的颜色区域与原始图像进行叠加。

结论

在本文中,我们学习了如何使用OpenCV和Python将RGB颜色空间转换为HSV颜色空间,并从中提取出特定的颜色范围。HSV颜色空间比RGB颜色空间更能准确地确定颜色范围。

希望这篇文章对您有所帮助!