我正在使用OpenCV和C++编写一个项目。我在Point2f向量中存储了四个四边形顶点的坐标。我想要访问该四边形的所有像素(以检查其面积内黑色像素的百分比)。您有什么好的想法吗?
附言:这个四边形不是矩形,否则这将非常容易。
编辑:为了更清晰地表达,我想遍历四个顶点给出的四边形内的每个像素,以访问其RGB值。
附言:这个四边形不是矩形,否则这将非常容易。
编辑:为了更清晰地表达,我想遍历四个顶点给出的四边形内的每个像素,以访问其RGB值。
我不确定我是否正确理解了你的问题。
但是,要找到四边形内部的面积,请找到四边形的轮廓并用不同的颜色填充它,然后找到具有该颜色的像素数。这样,您就可以获得百分比。
或者您可以使用矩方法来找到面积。或者尝试以下链接:
http://tech.groups.yahoo.com/group/OpenCV/message/58943 http://tech.groups.yahoo.com/group/OpenCV/message/44428
如果您想要访问四边形的每个像素,首先可以找到其轮廓并尝试使用“cvGetSeqElem”函数。请尝试以下链接获取一些代码:
http://osdir.com/ml/lib.opencv/2006-04/msg00044.html http://comments.gmane.org/gmane.comp.lib.opencv/15170
请告诉我是否误解了问题。
这种操作类似于光栅化,例如在OpenGL中用于绘制实际的多边形,因此任何关于光栅化的信息都可以帮助您。使用OpenGL进行光栅化会更有效,因为显卡有专门的硬件来处理,但由于您的问题涉及OpenCV,让我们使用OpenCV中可用的函数。
首先,我们将使用您的顶点调用cvFillConvexPoly()或cvFillPoly()来创建掩膜图像,然后我们可以调用您感兴趣的任何函数来处理原始图像和掩膜。这样,在循环像素时,我们只需要考虑相应掩膜值不为零的像素。
我认为你应该进行一些解析几何。你可以将四边形看作两个三角形的组合。连接两个未相连的点,形成一条虚拟线。然后,你可以使用围绕它的三条直线的方程计算三角形上的点。