用openCV识别HSV中的颜色范围

2024-05-15 09:01:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用python中的openCV识别黄色。我已经走到了这一步,我必须定义黄色在HSV中的上下范围。

定义蓝色范围的示例:

lower_blue = np.array([110,50,50])
upper_blue = np.array([130,255,255])

HSV通常是以百分比来定义的,我想知道如何像示例那样定义黄色的范围。

This is the colorspaces tutorial I've been following.

编辑: 上面提到的博客中有一些建议,但是没有给我想要的输出。


Tags: the示例定义isnpbluethisarray
3条回答

看看this page你会找到你想要的颜色的HSV值。

对于HSV,色调范围为[0179],饱和度范围为[0255],值范围为[0255]。不同的软件使用不同的规模。因此,如果要将OpenCV值与它们进行比较,则需要规范化这些范围。

我想你在下面的值中搜索黄色

lower_blue = np.array([25,50,50])
upper_blue = np.array([32,255,255])

它很简单。您可以使用函数cv2.cvtColor()

您只需传递要转换为hsv的BGR值,而不是传递图像。

例如,要查找绿色的HSV值,请键入以下命令

import numpy as np
import cv2

green = np.uint8([[[0, 255, 0]]]) #here insert the bgr values which you want to convert to hsv
hsvGreen = cv2.cvtColor(green, cv2.COLOR_BGR2HSV)
print(hsvGreen)

lowerLimit = hsvGreen[0][0][0] - 10, 100, 100
upperLimit = hsvGreen[0][0][0] + 10, 255, 255

print(upperLimit)
print(lowerLimit)

现在,上限是[H+10, 100,100]

下限为[H-10, 255, 255]

Official documentation (see the last part of following webpage) https://docs.opencv.org/3.1.0/df/d9d/tutorial_py_colorspaces.html

如果我想这样做,首先找到黄色的rgb编号(我在paint中使用“编辑颜色”) 然后使用以下方法将其更改为HSV:

 u = np.uint8([[[0,236,236]]])
 # define range of blue color in HSV
 lower_yellow = np.array(cv2.cvtColor(l,cv2.COLOR_BGR2HSV))
 upper_yellow = np.array( cv2.cvtColor(u,cv2.COLOR_BGR2HSV))```

相关问题 更多 >