私はマルチスケール画像を扱っています.3つのサイズ:オリジナル、ハーフ、ダブル私はそれらのそれぞれから個別に連結成分を抽出し、いくつかの計算を行います
最後に、ハーフ スケールとダブル スケールの接続コンポーネントの境界四角形を、元の画像の元の位置とサイズにマッピングしたいと考えています。
境界矩形のサイズ変更と再配置の私のコードは次のとおりです
Matrix<int> src = new Matrix<int>(3, 2,3);
Matrix<int> dst = new Matrix<int>(3, 2,2);
IntPtr mat = CvInvoke.cvCreateMat(2, 3, MAT_DEPTH.CV_32F);
src[0,0]=componentBRect.X;
src[0,1]=componentBRect.Y ;
src[1,0]=componentBRect.Right;
src[1,1]=componentBRect.Y;
src[2,0]=componentBRect.X;
src[2,1]=componentBRect.Bottom;
CvInvoke.cvGetAffineTransform(img2, img, mat); //img is the original image & img2 has been resized to 1/2 imgWidth and 1/2 imgHeight
CvInvoke.cvTransform(src.Ptr, dst.Ptr, mat, IntPtr.Zero);
dst ポイントを reszied して再配置することになっていますが、残念ながら同じポイントが再び返されます。getAffineTransform は単位行列を返すため、問題があると思います。
mat=
|1 0 0 |
|0 1 0 | !!
助言がありますか ??または、アフィン変換を使用せずにやりたいことを行う別の方法はありますか
前もって感謝します