2011-09-27 22 views
0

輪郭の最小境界矩形はOpenCvによって返され、CvRect構造体となります。私はmピクセル太い余白/元のイメージのこのCvRectに対応するサブイメージの周りの境界線、つまり、コンポーネント(輪郭)の正確な境界矩形の代わりに、コンポーネントを含むより大きなものを取得しようとしていますその直ぐ周囲のピクセルも含む。画像の境界の世話をイメージに反映されないCvRect値の変更

、私は後にサブ画像を取得するためにCvSetImageROI()が印加されるCvRectのサイズを大きくするには、次のコードを使用しています:

ここ
//making m px border around subimg 
CvRect box_swt = box1; 
box_swt.x = (box1.x)>m ? box1.x-m : box1.x; 
box_swt.y = (box1.y)>m ? box1.y-m : box1.y; 
box_swt.width = (box1.x + box1.width) < img->width-m ? box1.width+m : box1.width; 
box_swt.height = (box1.y + box1.height) < img->height-m ? box1.height+m : box1.height; 

box1店舗リターンをfrom cvBoundingRect(ptr, 0)ここで、ptrは検出された輪郭へのポインタです。

問題は、結果として得られるサブ画像は、上端および左端でのみ大きく、他の部分は変わらないことです。私はすべての側面の周りに均一なmピクセルの太い境界線でサブイメージを取得していません。これは、境界にあるものだけでなく、すべてのケースで発生します。論理的なエラーはありますか?

答えて

0

サイズを大きくしていない矩形のxとyを変更しているときに移動して、幅と高さをmだけ増やします。あなたが望むのは、望みの効果を得るためにそれを2m増やすことです。

+0

気づいていないというほど愚かで、投稿後しばらくそれを修正してください。とにかく、ありがとう。 – AruniRC

関連する問題