python - 如何找到联合矩形的轮廓
问题描述
所以我所做的只是用坐标绘制和着色所有矩形。并找到所有矩形的轮廓。
但我想知道是否有某种算法只用坐标信息做同样的事情。这样我就不需要绘制整个矩形并为其着色。(有超过 4000 个矩形,因此计算成本很高)
解决方案
使用轮廓检测,您可以实现您想要的。为此,您应该对 OpenCV 中使用的轮廓层次样式有很好的了解。有几种轮廓检索模式。比如cv2.RETR_LIST
, cv2.RETR_TREE
, cv2.RETR_CCOMP
, cv2.RETR_EXTERNAL
。您可以查看文档以获取更多信息。
在您的情况下,您应该使用cv2.RETR_EXTERNAL
它来检索图像的极端外部轮廓。
这是解决方案代码:
import cv2
im = cv2.imread('test.png')
imgray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
cv2.bitwise_not(imgray,imgray)
ret, thresh = cv2.threshold(imgray, 127, 255, 0)
im2, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
cv2.drawContours(im, contours, -1, (0,255,0), 3)
cv2.imshow("image", im)
cv2.waitKey(0)
输出:
推荐阅读
- javascript - 我已经检查了值,但是如何根据问题检查它?
- javascript - xhr.response 文本正在返回对象对象
- javascript - 仪表板应用程序中的 React 15 和 16 组件
- graphql - 如何通过 aws-cognito 属性将用户分组?
- aframe - aframe walk/click 如何在手机和台式机上工作?
- javascript - 如何在 Mozilla Firefox 浏览器中加载“chrome-extension”?
- sql - 我如何编写一个查询来计算两个表中一个条件中一个 id 的行数?
- node.js - 模拟测试不会失败
- erlang - 用系统命令替换 Erlang shell
- javascript - PWA 中 Android 后退按钮的自定义事件