使用openCV识别HSV中的颜色范围

Har*_*ish 2 python opencv

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

定义蓝色范围的示例:

lower_blue = np.array([110,50,50])
upper_blue = np.array([130,255,255])
Run Code Online (Sandbox Code Playgroud)

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

这是我一直关注的色彩空间教程。

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

小智 8

您可以使用此示例调色板。第一个值是上限,第二个值是下限

color_dict_HSV = {'black': [[180, 255, 30], [0, 0, 0]],
              'white': [[180, 18, 255], [0, 0, 231]],
              'red1': [[180, 255, 255], [159, 50, 70]],
              'red2': [[9, 255, 255], [0, 50, 70]],
              'green': [[89, 255, 255], [36, 50, 70]],
              'blue': [[128, 255, 255], [90, 50, 70]],
              'yellow': [[35, 255, 255], [25, 50, 70]],
              'purple': [[158, 255, 255], [129, 50, 70]],
              'orange': [[24, 255, 255], [10, 50, 70]],
              'gray': [[180, 18, 230], [0, 0, 40]]}
Run Code Online (Sandbox Code Playgroud)


stu*_*men 6

看看此页面,您会找到所需颜色的HSV值。

对于HSV,色相范围为[0,179],饱和度范围为[0,255],值范围为[0,255]。不同的软件使用不同的比例。因此,如果将OpenCV值与它们进行比较,则需要将这些范围标准化。

我猜你正在搜索如下所示的黄色值

lower_blue = np.array([25,50,50])
upper_blue = np.array([32,255,255])
Run Code Online (Sandbox Code Playgroud)


Yas*_*ash 6

简单。您可以使用功能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)
Run Code Online (Sandbox Code Playgroud)

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

和下限将是 [H-10, 255, 255]

官方文档(请参阅以下网页的最后部分)https://docs.opencv.org/3.1.0/df/d9d/tutorial_py_colorspaces.html