python-3.x - OpenCV - 使用开放(非封闭)Canny 轮廓线作为遮罩的边界
问题描述
如果我在错误的位置发帖,我深表歉意。请让我知道是否是这种情况。否则,我感谢提供的任何帮助或指导。
我有一个背景下的物体图像,我想对其进行预处理以仅具有感兴趣的区域。我已经完成了一些预处理,例如裁剪和对比度增强,但现在我想将背景设置为纯色。我正在使用 canny 生成对象边缘和背景之间的轮廓线,如下所示:
现在,我想知道是否可以以某种方式使用中间的那条长线作为遮罩的边界,以覆盖所述线下方的所有内容。我在这个网站和其他地方看到的每个例子总是使用封闭几何形状(如正方形、圆形等)的 Canny 轮廓。
我试图抓住面积最大的轮廓(希望它能捕获上半部分或下半部分),如下所示:
cnts = cv2.findContours(img_edge_top.copy(), cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
cnts = imutils.grab_contours(cnts)
cnts = sorted(cnts, key = cv2.contourArea, reverse = True)[:10]
contour = max(cnts, key = cv2.contourArea)
cv2.drawContours(img_blur_top, [contour], -1, (0, 255, 0), 3)
cv2.imshow("contour", img_edge_top)
cv2.waitKey(0)
我在下面得到的是原始图像:
指向正确方向或类似示例的点就足够了。谢谢
解决方案
推荐阅读
- javascript - 无法填充 FormData 对象
- selenium - 在 JBehave 故事中的一条记录失败后继续执行记录
- java - 如何将带有 Java (Android Studio) 中的值的 HTTP Post 请求发送到 Ubidots
- ios - 使用自动布局创建对齐的表单
- ios - 如何使用 segues 将数据传递给另一个视图控制器的函数?
- c - 无法读取 FS-IA6B 的频道
- sql - sql,获取范围内的日期,但也使用getDate
- python - Pyqt标签在调整标签大小时改变窗口大小
- html - 锚标签不锚
- c# - c# 导致问题的最后 26 个结果的最小最大值