2017-02-09 69 views
0

我正在使用OpenCV和Python开发可以在图像中查找目标模式的软件。我目前正在寻找所需的目标,其中一部分正在运行HSV阈值操作以隔离目标的颜色。该HSV阈值的代码如下所示:如果成功,OpenVV中的HSV阈值应该返回什么?

out = cv2.cvtColor(input, cv2.COLOR_RGB2HSV) 
return cv2.inRange(out, (hue[0], sat[0], val[0]), (hue[1], sat[1], val[1])) 

hue[]sat[],并且val[]在代码的其他地方定义,并包含经实验检验值我正在寻找的HSV范围的阵列。运行此方法后,我添加了打印语句以打印输出。当我在我的相机帧运行这个方法,它的返回这样的:

[[0 0 0 ..., 0 0 0] 
[0 0 0 ..., 0 0 0] 
[0 0 0 ..., 0 0 0]] 

我试图用气球的不同股票的图像包含许多不同的颜色,它返回同样的事情。如果正确工作,我很难找到关于HSV方法应该返回的文档,所以我不确定如何调试。

有没有人知道我应该看到什么类型的输出,如果事情工作正常和/或有任何例子?

+0

cv2.inRange()返回一个二进制图像,这是像素阵列,而不是一个单一的值。因此,所有0都对应于阈值后图像中的黑色像素。 尝试使用imshow查看您的图像。另外,你如何定义“正常工作”?请分享一些图片来说明您期望的输出 –

+0

FYI务必检查[OpenCV颜色转换指标](http://docs.opencv.org/2.4/modules/imgproc/doc/miscellaneous_transformations.html#cvtcolor),手动阈值时非常重要! –

+0

请提供out.dtype,色相,饱和度和色度的下限和上限。 –

回答

0

我已经解决了这个问题,我想把它放在这里以防万一任何人有类似的问题并在以后搜索它。

将图像打印到窗口对我非常有帮助,因为我的网络浏览器为IP摄像头,GRIP显示窗口和OpenCV图像都略有不同,因此我从GRIP获取的阈值数字不起作用根本没有,只返回一个黑色的图像。

下面是如何打印图像窗口,看看你正在使用的是什么:

cv2.imshow('image', img) #img is your image, 'image' is the name of the window you'll create 
cv2.waitKey(0) #handles GUI elements, and causes the window to close when you press any key 
cv2.destroyAllWindows() 
相关问题