我的输入
我有vector<Point2f>
,其中包含多边形的轮廓。我还有一个需要与此多边形相交的点列表。
问题
我想计算这些点中有多少与多边形相交。我想在多个多边形上重复这个计算,看看哪个包含最多的点数。
OpenCV是否实现了自己的交叉功能,还是我需要自己实现交叉功能?我担心如果我自己尝试实现它,结果会不必要地慢。如果OpenCV无法做到,是否还有其他可以执行此任务的免费图形库?
答案 0 :(得分:3)
pointPolygonTest正是您正在寻找的,并且它已经得到了很好的优化。参数是Mat
,您可以使用带有矢量点的构造函数来创建该参数。
该函数确定该点是在轮廓内,外部还是位于边缘(或与顶点重合)。它相应地返回正(内部),负(外部)或零(边缘)值。当measureDist = false时,返回值分别为+ 1,-1和0。否则,返回值是点与最近轮廓边之间的有符号距离。
但是你的问题似乎很容易并行化,即每批候选多边形可以在不同的线程上运行,所以如果你担心性能,我肯定会考虑这个问题。