两个范围内的HSV掩码

时间:2021-05-25 14:20:59

标签: python opencv hsv

这是我的问题:

我需要从下图中分离出蓝色曲线:

enter image description here

曲线可以在图像中的任何位置,所以我实现了一个模式识别,效果很好,给了我以下框:

enter image description here

现在,我要做的是提取曲线本身。曲线可以是任何颜色,所以我想我会提取图片中的主要颜色并应用与这些颜色相对应的 HSV 蒙版。 我设法这样做并恢复了曲线的颜色。 这些是,在 BGR 中:[68, 240, 86] 和 [160, 81, 76]

现在我的问题是找到对应的 HSV 值以应用掩码。我尝试过的所有事情都以完全黑色的结果告终。

这是我当前的掩码代码:

low = np.uint8([[llow]])
high = np.uint8([[lhigh]])

hsv_low = cv2.cvtColor(low, cv2.COLOR_BGR2HSV)
    
hsv_high = cv2.cvtColor(high, cv2.COLOR_BGR2HSV)

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

print(hsv_low, hsv_high)

mask1 = cv2.inRange(hsv, hsv_low, hsv_high)

output = cv2.bitwise_and(img, img, mask=mask1)

show("hsv", output)
wait()

与:

llow = [68, 240, 86] 
lhigh = [160, 81, 76]

我也认为获得的 HSV 值有点奇怪,有 hsv_low 最终是 [86, 240, 68] 和 hsv_high [76, 81, 160],所以我不知道哪个应该是较低的范围或较高的范围。 (我尝试切换它们但没有发生任何变化) 任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

试试戴口罩

lower_blue = np.array([60, 40, 40])
upper_blue = np.array([130, 255, 255])

它们已经在 HSV 颜色空间中,我得到的图片看起来像这样。现在您只需要从绿色刻度上填充孔。

enter image description here

相关问题