【问题标题】:Alternative to opencv warpPerspectiveopencv warpPerspective 的替代方案
【发布时间】:2019-10-13 00:23:48
【问题描述】:

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

如下图所示:

但是 warpPerspective() 函数需要“更多时间”才能将图像变形为完整图像,是否有任何替代此函数可以将图像中的对象变形为完整图像的方法,如图所示。 或者会遍历帮助吗?但这很难做到,所以我可以减少 warpPerspective() 函数所花费的时间。

【问题讨论】:

  • 也许你可以使用你设备的gpu。

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


【解决方案1】:

您可以尝试处理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 中更快地做到这一点:)

祝你好运!

【讨论】:

  • warpPerspective 做同样的事情,只是矩阵乘法和每个输出像素的插值。
  • @Micka 是的,确实如此,但我认为(因为我不确定它是否有效)可以更快地进行这些乘法运算。不是通过 C 编译器,而是通过 GPU 什么的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-19
  • 1970-01-01
  • 2014-03-26
  • 1970-01-01
  • 2013-01-19
相关资源
最近更新 更多