Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 两个范围内的HSV面罩_Python_Opencv_Hsv - Fatal编程技术网

Python 两个范围内的HSV面罩

Python 两个范围内的HSV面罩,python,opencv,hsv,Python,Opencv,Hsv,这是我的问题: 我需要从下图中分离蓝色曲线: 曲线可以在图像中的任何位置,因此我实现了一种模式识别,效果很好,下面是一个方框: 现在,我要做的是提取曲线本身。曲线可以是任何颜色,所以我想我应该提取图片中的主要颜色,并应用与这些颜色对应的HSV遮罩。 我成功地恢复了曲线的颜色。 这些是,在BGR中:[68,240,86]和[160,81,76] 现在我的问题是找到相应的HSV值以应用遮罩。我尝试过的所有事情都以一个完全不好的结果告终 以下是我当前的掩码代码: low = np.uint8([[

这是我的问题:

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

曲线可以在图像中的任何位置,因此我实现了一种模式识别,效果很好,下面是一个方框:

现在,我要做的是提取曲线本身。曲线可以是任何颜色,所以我想我应该提取图片中的主要颜色,并应用与这些颜色对应的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()
与:

我还认为获得的HSV值有点奇怪 hsv_低端最终为[86,240,68],hsv_高端为[76,81,160],所以我不知道哪个应该是低端还是高端。(我已尝试切换它们,但未发生任何更改) 任何帮助都将不胜感激

试试戴口罩吧

lower_blue = np.array([60, 40, 40])
upper_blue = np.array([130, 255, 255])
他们已经在HSV颜色空间,我得到的图片看起来像这样。现在,您只需要从绿色刻度填充孔


嘿,感谢您花时间回答,我也通过手动处理范围实现了这一点,但由于我在上一步中检索到的颜色范围,我真的很想实现自动化…您不需要填补这些空白,因为在原始曲线中,整个曲线都具有相同的颜色。他发布了一张JPEG图片,这会干扰颜色信息。在发布图片时,使用PNG是一个非常好的主意,因为它是无损的。
lower_blue = np.array([60, 40, 40])
upper_blue = np.array([130, 255, 255])