gpt4 book ai didi

c++ - 在原始图像和转换后的图像之间进行插值

转载 作者:太空宇宙 更新时间:2023-11-04 13:53:03 25 4
gpt4 key购买 nike

在 OpenCV 中,我使用特征匹配技术在其他图像中查找匹配对象。当我找到匹配的对象时,我使用“findHomography”方法计算透视变换。 FindHomography

这很好用,我可以根据这个矩阵转换图像。我有一个在原始图像和转换后的图像之间进行 alpha 混合的视频,但现在我想为原始位置和转换后的位置之间的过渡设置动画,而不仅仅是两者之间的 alpha 混合。

我有 3x3 Homography 矩阵,它给我完整的变换,但我如何在没有变换和这个之间进行插值?如果 3x3 矩阵具有单个值,那么我将在 0 和矩阵值之间进行插值,但有很多时间步长。然而,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

最佳答案

解决此问题的一种简单方法是在单位矩阵(即无变换)和您使用 findHomograhy 估计的单应矩阵之间使用线性插值。

如果 H 是估计的单应性并且 N 是您要使用的时间步数,那么在 [0,N] 中的第 k 步应用转换如下: Hk = (1-ak) * Id + ak * H,其中ak = k/N.

关于c++ - 在原始图像和转换后的图像之间进行插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22745220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com