python - OPENCV:添加一个更大的矩形来计数矩形
问题描述
我有这张图片,下面的代码我已经获得了这个https://drive.google.com/file/d/16cg2RcJlrr7b3Z9HazApLo-HYubw2F6M/view?usp=sharing
contours = cv2.findContours(gray.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
contours = contours[0] if len(contours) == 2 else contours[1]
for c in contours:
area = cv2.contourArea(c)
if area > 500:
x,y,w,h = cv2.boundingRect(c)
cv2.rectangle(img, (x, y), (x + w, y + h), (36,255,12), 2)
cv2.drawContours(img, [c], 0, (0,255,0), -1)
#cv2.drawContours(filled_after, [c], 0, (0,255,0), -1)
现在我想从左上角到右下角添加一个更大的矩形,它将包含闭合的矩形。这是我的预期输出:https ://drive.google.com/file/d/10Cd8sE6SeY-kpiRnsafNSIOJWXs773L5/view?usp=sharing
我已经尝试过 cv2.convexHull 但这不是我想要的。
没有任何计数的原始图像:https ://drive.google.com/file/d/1BGFlW5gLmAi9o1FkevZZzZaDmhYfHKVo/view?usp=sharing
你能帮忙吗?
解决方案
这取决于您希望两条分开的线变成一条的距离有多近。
如果它像图像中那样接近,我认为在 findContours 之前稍微模糊一下图像就可以了。
但是,如果您希望将两条相距很远的分离线组合在一起并且模糊不够,您可以尝试 NMSBoxes
在 cv2.dnn 中寻找类似的东西。您基本上给出了您在图像中绘制的所有框,如果它们根据您给定的阈值足够接近,该方法将尝试对它们进行分组。
推荐阅读
- python - django 在后台运行 websocket 客户端
- python - 从虚拟环境中的 pip 安装的 uWSGI 无法识别 http-auto-gzip
- node.js - 当我尝试连接到 mongodb 得到这个错误
- python - Python 与 Matlab 中的 FastICA 性能
- javascript - jsdelivr 不更新 github 提交
- android - 如果我在 Manifest 中有应用程序标记,Xamarin Forms Android 项目将不会部署
- javascript - 在 dayjs() 中覆盖单个 Locale 属性
- linux - Azure 功能、消费计划、Linux、缓解“应该需要 FTPS”
- typescript - 模板文字类型不适用于字符串连接
- javascript - html表格列值的总和(动态)