我正在尝试同时旋转和移动垫子。 我的第一个矩阵来自以下指令:
CvInvoke.GetRotationMatrix2D(new Point(0,0),ia.getAngle(),1.0,rotation);
我的第二个学位来自以下说明:
Mat translation = CvInvoke.GetAffineTransform(t1, t2);
其中t1和t2是两个三角形的顶点 我不想使用矩阵。我想用Mat执行操作。
如何将这两个矩阵相乘以获得我将用于应用 CvInvoke.WarpAffine 方法的最终矩阵。
我试过了:
cvInvoke.Multiply
,
它不会改变图像。
我正在尝试
CvInvoke.Gemm(rotation, translation, 1.0, null, 0.0, final);
但是会发生异常:
(类型' Emgu.CV.Util.CvException'发生未处理的异常 在Emgu.CV.World.dll中附加信息:OpenCV:a_size.width == LEN)
非常感谢任何帮助。
答案 0 :(得分:0)
我的坏。当翻译正在进行时,矩阵的大小必须为3x3。所以我修改了我的代码并使用了以下方法: CvInvoke.FindHomography(t1,t2,H); CvInvoke.WarpPerspective(img,big_img,H,ROIRotatedArea.Size); 其中t1是源图像的点,t2是变换图像的对应点,H是变换矩阵。 t1,t2和H是Matrix类型。
希望有一天能帮到某人。