OpenCV仅支持矩形ROI.
但是,要对特定像素进行一些处理,可以使用一些辅助函数.
其中之一是pointPolygonTest(),它告诉您给定的像素不属于多边形.
所以你可以写一些像
for(i=0;i<height;i++)
{
for(j=0;j<width;j++)
{
if(pointPolygonTest(Point(i,j),myPolygon))
{
// do some processing
}
}
}
Run Code Online (Sandbox Code Playgroud)
另一个(更快)选项是由@ andeas-haferburg提供的选项.通过在新的灰度图像中绘制多边形来制作蒙版:
drawPoly()
Run Code Online (Sandbox Code Playgroud)
(因此背景为0,多边形为255),然后您可以传递给其他一些函数,或者自己使用它:
for(i=0;i<height;i++)
{
for(j=0;j<width;j++)
{
if(mask[j+w*i]))
{
// do some processing
}
}
}
Run Code Online (Sandbox Code Playgroud)
上面的例子只是伪代码,你必须让它工作.