在OpenCV中,我使用特征匹配技术在其他图像中查找匹配的对象。当我找到匹配的对象时,我使用" findHomography"来计算透视变换。方法。 FindHomography
这很好用,我可以根据这个矩阵变换图像。我有一个视频,在原始图像和变换图像之间混合使用alpha,但现在我想在原始位置和变换位置之间设置过渡动画,而不是仅仅在两者之间进行alpha混合。
我有3x3 Homography矩阵,它给了我完整的转换,但是如何在没有转换和这之间进行插值?如果3x3矩阵具有单个值,那么无论多少时间步长,我都会在0和Matrix值之间进行插值。然而,3x3矩阵的每个元素都由3个值组成,我猜是因为它们是同质坐标。
任何人都可以建议解决此问题的最佳方法。
修改
尝试AldurDisciple建议的方法我用以下方法创建单位矩阵:
Mat eye = Mat::eye(3,3,CV_32F);
使用以下方法执行建议的计算:
Mat newH = (1-calc) * eye + calc * H;
其中calc = k / N表示步骤/总步数。
我在尝试计算newH时出现断言失败错误,错误为:
src1.type() == src2.type() in function scaleAdd
答案 0 :(得分:0)
一种简单的方法是在单位矩阵(即无变换)和用findHomograhy
估计的单应矩阵之间使用线性插值。
如果H
是估计的单应性,N
是您要使用的时间步数,那么在[0,N]中步骤k应用的变换如下:H < sub> k =(1-a k )* Id + a k * H, k = k / N