如何使用OpenCV Python查找颜色的HSV值?

如何使用OpenCV Python查找颜色的HSV值?

OpenCV是计算机视觉领域最受欢迎的开源库之一。它可以用于图像处理、计算机视觉及机器学习等领域。HSV颜色模型是OpenCV Python中一个重要的参数,可以用于查找图像中特定颜色的像素。在本篇文章中,我们将介绍一些使用OpenCV Python进行HSV颜色查找的简单方法。

什么是HSV颜色模型

HSV颜色模型是基于人类视觉的原理设计的一种颜色模型。它用三个参数描述一个颜色:Hue(色相)、Saturation(饱和度)、Value(亮度)。

  • 色相(Hue):表示几何上的颜色,取值范围为0~360度。其中红色为0度、绿色为120度、蓝色为240度。
  • 饱和度(Saturation):表示颜色的纯度,取值范围为0~1。值越高,颜色越鲜艳。
  • 亮度(Value):表示颜色的亮度,取值范围为0~1。值越高,颜色越明亮。

HSV颜色模型可以用于图像处理中的颜色识别和跟踪等任务。

如何使用OpenCV Python查找颜色的HSV值

使用OpenCV Python查找颜色的HSV值需要先将BGR颜色空间转换为HSV颜色空间。我们可以使用cv2.cvtColor()函数实现转换。

示例代码

import cv2
import numpy as np

# 读取图像
img = cv2.imread("example.png")

# 将BGR颜色空间转换为HSV颜色空间
hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

# 查找指定HSV值范围内的像素
lower = np.array([30, 50, 50])
upper = np.array([70, 255, 255])
mask = cv2.inRange(hsv_img, lower, upper)

# 显示图像和掩模
cv2.imshow("Image", img)
cv2.imshow("Mask", mask)
cv2.waitKey(0)

上述代码将一个名为example.png的图像读入,并将其从BGR颜色空间转换为HSV颜色空间。然后,我们查找了HSV值在[30, 50, 50][70, 255, 255]范围内的像素,并创建了一个掩模。最后,我们分别显示原始图像和创建的掩模。

在这个例子中,我们创建了一个名为mask的掩模。这是一个表示每个像素是否属于特定颜色范围的二进制图像。如果像素属于特定颜色范围,那么它在掩模中的值就是255,否则就是0

调整颜色范围

如果需要查找不同颜色范围内的像素,请调整lowerupper值。

示例代码

import cv2
import numpy as np

# 读取图像
img = cv2.imread("example.png")

# 将BGR颜色空间转换为HSV颜色空间
hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

# 查找指定HSV值范围内的像素
lower_red = np.array([0, 50, 50])
upper_red = np.array([10, 255, 255])
red_mask = cv2.inRange(hsv_img, lower_red, upper_red)

lower_red = np.array([170, 50, 50])
upper_red = np.array([180, 255, 255])
red_mask += cv2.inRange(hsv_img, lower_red, upper_red)

# 显示图像和掩模
cv2.imshow("Image", img)
cv2.imshow("Red Mask", red_mask)
cv2.waitKey(0)

上述代码首先读取了一个名为example.png的图像,并将其从BGR颜色空间转换为HSV颜色空间。然后,我们定义了两个不同的颜色范围,即[0, 50, 50][10, 255, 255][170, 50, 50][180, 255, 255],并分别用两个掩模表示这两个范围内的像素。最后,我们分别显示原始图像和两个掩模。

在这个例子中,我们首先创建了一个名为red_mask的掩模,表示[0, 50, 50][10, 255, 255]范围内的像素。然后,我们使用类似的方法创建了另一个掩模,表示[170, 50, 50][180, 255, 255]范围内的像素。注意,我们使用了+=运算符将两个掩模合并。

结论

在本文中,我们介绍了如何使用OpenCV Python查找颜色的HSV值。我们首先介绍了HSV颜色模型的基本概念,然后展示了如何将BGR颜色空间转换为HSV颜色空间,并使用cv2.inRange()函数查找特定颜色范围内的像素。最后,我们展示了如何调整颜色范围以查找不同颜色范围内的像素。希望这篇文章对你有帮助。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

Python OpenCV