7

ROIは長方形でのみ実装できます。ただし、ROIとして設定したい輪郭があります。長方形ではなく輪郭をROIとして使用する方法を知っている人はいますか?

それ以外の場合、不可能な場合、特定の輪郭のピクセルにのみアクションを集中させるにはどうすればよいですか?

ありがとう

PS:これらすべてのOpenCVの質問について申し訳ありません。本当に混乱しています:$

4

1 に答える 1

7

OpenCVは長方形のROIのみをサポートします。

ただし、特定のピクセルの処理を行うために、いくつかのヘルパー関数を使用できます。

それらの1つは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

もう1つの(より高速な)オプションは、@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 に答える