【发布时间】:2019-07-10 09:24:05
【问题描述】:
我正在使用 OpenCV 进行手部检测。但是我在尝试脱粒图像的轮廓时很挣扎。 findContour 总是会尝试寻找白色区域作为轮廓。
所以基本上它在大多数情况下都有效,但有时我的脱粒图像看起来像这样:
_, threshed = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY|cv2.THRESH_OTSU)
所以要让它工作,我只需要更改阈值类型cv2.THRESH_BINARY_INV。
_, threshed = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY_INV|cv2.THRESH_OTSU)
而且效果很好。
我的问题是如何确定何时需要反转阈值?我是否需要始终在两个脱粒图像上找到轮廓,并比较结果(我这种情况如何?)?或者有一种方法可以缓解知道轮廓是否没有完全丢失。
编辑:有一种方法可以 100% 确定轮廓看起来像一只手吗?
编辑 2 :所以我忘了提到我正在尝试使用此 method 检测指尖和缺陷,所以我需要缺陷,在第一个脱粒图像中我找不到它们,因为它反转了。请参阅第一个轮廓上的蓝点image。
谢谢。
【问题讨论】:
-
findContours 在倒置二值图像上的工作原理相同,因此如果您只需要轮廓,则无需担心。
-
好吧,我的错我忘记了一些信息,我将编辑问题。就在这里我需要检测缺陷点。
标签: python opencv opencv-contour image-thresholding