首页 > 解决方案 > 如何找到联合矩形的轮廓

问题描述

我有每个矩形的坐标,并想找到联合矩形的轮廓。 矩形

矩形轮廓

所以我所做的只是用坐标绘制和着色所有矩形。并找到所有矩形的轮廓。 彩色矩形

但我想知道是否有某种算法只用坐标信息做同样的事情。这样我就不需要绘制整个矩形并为其着色。(有超过 4000 个矩形,因此计算成本很高)

标签: pythonopencv

解决方案


使用轮廓检测​​,您可以实现您想要的。为此,您应该对 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)

输出:


推荐阅读