替代opencv warpPerspective

时间:2019-05-27 12:12:53

标签: python c++ opencv image-processing transformation

我正在使用opencv warpPerspective()函数在图像中扭曲找到的轮廓以找到轮廓,而我正在使用findContours()。

这在这张图中显示:

enter image description here

但是warpPerspective()函数需要“更多时间”才能扭曲为完整图像,如图所示,该函数还有其他选择可以将图像中的对象扭曲为完整图像。 还是会遍历有帮助?但这很难做到,这样我可以减少warpPerspective()函数花费的时间。

1 个答案:

答案 0 :(得分:0)

您可以尝试处理rotationtranslation矩阵(或旋转平移矩阵,两者的组合),它们可以使图像变形。函数warpPerspective()使用类似的方法,因此您基本上将有机会查看函数内部。

方法是:

  1. 您计算矩阵,然后将高度和宽度相乘 原始图像以查找输出图像的尺寸。

  2. 浏览原始图像中的所有像素,并将其相乘 (x,y)坐标到矩阵R (旋转/平移/旋转平移矩阵)以获取 坐标在输出图像(xo,yo)上。

  3. 在每个计算的坐标(xo,yo)上从 相应的原始图像坐标(x,y)。

  4. 使用中值滤波器/双线性/双三次/等进行插值。方法为 有时在输出图像上可能会留下空白点

但是,如果您使用Python工作,则其实现可能比warpPerspective()还要慢,因此您可以考虑使用C ++。另一件事是OpenCV使用C ++编译器,而且我很确定OpenCV中warpPerspective()的实现非常有效。

因此,我认为您可以解决warpPerspective()的问题,但是,我不确定是否可以在没有任何提升(例如GPU,强大的CPU等)的情况下比OpenCV更快地完成它:)

祝你好运!