如何使用emgu(c#)执行Mats的组合?

时间:2016-03-15 15:39:41

标签: c# emgucv

我正在尝试同时旋转和移动垫子。 我的第一个矩阵来自以下指令:

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)

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我的坏。当翻译正在进行时,矩阵的大小必须为3x3。所以我修改了我的代码并使用了以下方法:     CvInvoke.FindHomography(t1,t2,H);     CvInvoke.WarpPerspective(img,big_img,H,ROIRotatedArea.Size); 其中t1是源图像的点,t2是变换图像的对应点,H是变换矩阵。 t1,t2和H是Matrix类型。

希望有一天能帮到某人。