【发布时间】:2012-01-04 09:23:53
【问题描述】:
我在 OpenCV 2.3.1 中成功实现了轮廓的 Delaunay 三角剖分。
使用 cvPointPolygonTest 我可以获得凸包中的所有三角形,然后我尝试在三角形质心上执行另一个 cvPointPolygonTest 以了解它们是否在主轮廓中,所以我可以轮廓的约束三角剖分。
但是,它不能很好地工作,因为有些三角形是(例如,一个走路的人,他的两条腿分开)“越过”一个洞。
有谁知道执行约束三角测量的方法。我想到了convexityDefects,但无法理解如何从这个开始。
提前致谢!
本
实际上,这不是凸壳缺陷问题,而是三角剖分问题。这张图片会告诉你麻烦:
特别是在三角包的底部,您可以看到三角剖分在轮廓内和外,因为 OpenCV 正在对凸包进行三角剖分。我想找到一种方法来对轮廓本身进行三角测量。
我发现了一些关于在轮廓本身中添加施泰纳点的想法,但找不到从哪里开始使用 OpenCV。
我的想法是:
- 测试三角形是否在轮廓内和外;
- 如果为真:获取交点;
- 并将其添加到 cvSubdiv2D。
我说得对吗?
感谢您的耐心和回答!
【问题讨论】:
-
你的意思是你的轮廓里面有一些洞,一些三角形里面有质心?
-
感谢您的评论。是的,我就是这个意思。 cvSubdiv2D 对轮廓的凸包执行 Delaunay 三角剖分,而不是轮廓本身。所以(在一个人走路的情况下)我在左腿的边缘有一个点,在右腿的边缘有同一个三角形的另一个点。在这种情况下没关系:质心不在男人身上轮廓,但是当三角形在轮廓 和 孔上方时,它只会擦除三角形或完全占据它,具体取决于质心位置。
标签: opencv triangulation delaunay convex-hull