Я имею дело с многомасштабными изображениями, 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 | !!
Любые предложения ?? или есть другой способ сделать то, что я хочу, без использования аффинного преобразования
Заранее спасибо