【发布时间】:2015-08-09 13:54:43
【问题描述】:
我在下面有一个轮廓。由于我想提取此轮廓内的所有像素并将其他所有内容涂黑以消除噪音,因此我使用了 cv2.pointPolygonTest。
以下是我用来尝试创建掩码的代码。
inside_or_not = np.zeros(img.shape[:2],dtype = np.int32)
for i in range(0,img.shape[0]):
for j in range(0,img.shape[1]):
inside_or_not[i,j] = cv2.pointPolygonTest(body_line,(i,j),False)
仅发现 2 个点位于该点内。最重要的是,我希望轮廓上的点数,因此从 cv2.pointPolygonTest 返回 0 应该与定义轮廓的像素数相匹配。但是,当我运行 sum(sum(inside_or_not == 0)) 时,它与轮廓上的像素数不匹配。 我还使用鼠标单击在轮廓内明显单击一个点并将该点放入测试中;但返回 -1 表示测试失败。
我还使用了一个 approxPolyDP 函数来尝试用更少的顶点来逼近轮廓。这一次返回了更多的积分。但是我不知道为什么!
感谢您的帮助。
【问题讨论】:
-
怎么样:1) findContours,2) drawContours(... CV_FILLED ... 3) findNonZero(可选)?
-
抱歉,但我不确定带有颜色填充的 drawContours 会如何产生影响,因为绘图函数肯定不会返回或修改任何现有对象......?
-
你能上传一张png图片吗? jpeg 创建不需要的工件
-
您好,我已将其更改为 png。
-
我发布了一个答案,如果它符合您的需求,请告诉我
标签: python opencv image-processing computer-vision contour