7

ROI 只能用一个矩形来实现。但是,我有一个要设置为 ROI 的轮廓。有谁知道我将如何使用轮廓作为 ROI 而不是矩形?

否则,如果不可能,我怎么能只将我的动作集中在特定轮廓的像素中?

谢谢

PS:抱歉所有这些 OpenCV 问题。只是真的很困惑:$

4

1 回答 1

7

OpenCV 仅支持矩形 ROI。

但是,要对特定像素进行一些处理,您可以使用一些辅助函数。

其中之一是 pointPolygonTest(),它告诉你一个给定的像素不属于一个多边形。

所以你可以写类似

for(i=0;i<height;i++)
{
      for(j=0;j<width;j++)
      {
          if(pointPolygonTest(Point(i,j),myPolygon))
          {
                 // do some processing
          }
      }
}

还要检查这个样本 http://opencv.itseez.com/doc/tutorials/imgproc/shapeescriptors/point_polygon_test/point_polygon_test.html#point-polygon-test

另一个(更快)选项是@andeas-haferburg 建议的选项。通过在新的灰度图像中绘制多边形来制作蒙版:

drawPoly() 

(所以背景为0,多边形为255),然后可以传递给其他一些函数,或者自己使用:

for(i=0;i<height;i++)
{
      for(j=0;j<width;j++)
      {
          if(mask[j+w*i]))
          {
                 // do some processing
          }
      }
}

上面的例子只是伪代码,你必须让它工作。

于 2011-10-31T07:16:18.027 回答