我在一个 numpy 数组中有下面的图像
我想要
将块分成单独的轮廓或任何坐标表示。
然后我想将任何凹多边形转换为多个凸多边形。
像这样
到目前为止,我已经设法用 opencv 将每个块隔离成轮廓......但是有没有一种简单的方法可以将 L 形对象分成两个或多个方形块。如果需要,每个形状的新轮廓可以重叠。
也可能是我有这样的图像,它没有这样的直线。
我曾经cv2.approxPolyDP
画过形状,但它们又是凹的,我需要将它们分开。
任何帮助表示赞赏。
我在一个 numpy 数组中有下面的图像
我想要
将块分成单独的轮廓或任何坐标表示。
然后我想将任何凹多边形转换为多个凸多边形。
像这样
到目前为止,我已经设法用 opencv 将每个块隔离成轮廓......但是有没有一种简单的方法可以将 L 形对象分成两个或多个方形块。如果需要,每个形状的新轮廓可以重叠。
也可能是我有这样的图像,它没有这样的直线。
我曾经cv2.approxPolyDP
画过形状,但它们又是凹的,我需要将它们分开。
任何帮助表示赞赏。
好的,谢谢拉胡尔的回答。
我最终找到了一个包,它可以帮助我分割解决我的问题的多边形。
下载:
pip install sect
然后 :
from sect.triangulation import constrained_delaunay_triangles
取 openCV 生成的轮廓 - 这会生成如下。
然后“平滑”颜色,这样颜色就更少了。我用过这个
epsilon = 0.005 * cv2.arcLength(contour, True)
approx = cv2.approxPolyDP(contour, epsilon, True)
然后通过 sect 运行它
constrained_delaunay_triangles([tuple(x) for x in approx.squeeze()])
输出将多边形分成三角形,完全去除所有凹多边形。