在OpenCV中使用ROI

Using ROI in OpenCV?

本文关键字:ROI OpenCV      更新时间:2023-10-16

ROI只能通过矩形实现。然而,我有一个轮廓,我想设置为ROI。有人知道我该如何使用等高线而不是矩形作为ROI吗?

否则,如果不可能的话,我怎么能把我的动作只聚焦在特定轮廓的像素上?

感谢

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

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/shapedescriptors/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
          }
      }
}

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