Using ROI in OpenCV?

◇◆丶佛笑我妖孽 提交于 2019-11-28 20:54:36

OpenCV supports only rectangular ROIs.

However, to make some processing for specific pixels, you can use some helper functions.

One of them is pointPolygonTest(), which tells you a given pixel belongs on not to a polygon.

So you can write something like

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

Also check this sample http://opencv.itseez.com/doc/tutorials/imgproc/shapedescriptors/point_polygon_test/point_polygon_test.html#point-polygon-test

Another (faster) option is the one sugested by @andeas-haferburg. Make a mask by painting your polygon in a new grayscale image:

drawPoly() 

(So that background is 0, and the polygon is 255), Then you can pass to some other functions, or use it by yourself:

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

The example above is just pseudo code, you have to make it work.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!