我正在处理多尺度图像,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 点重新调整和重新定位,但不幸的是再次返回相同的点,我认为 getAffineTransform 存在问题,因为它返回一个单位矩阵
mat=
|1 0 0 |
|0 1 0 | !!
有什么建议么 ??还是有另一种方法可以在不使用仿射变换的情况下做我想做的事
提前致谢