OpenCV扭曲透视的替代方案 [英] Alternative to opencv warpPerspective

查看:69
本文介绍了OpenCV扭曲透视的替代方案的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用OpenCV warpVision()函数扭曲图像中找到的反轮廓,以找到我正在使用findContours()查找的轮廓。

如下图所示:

但warpVision()函数需要"更多时间"才能将图像扭曲为全图。是否有其他方法可以将图像中的对象扭曲为全图,如图所示。 或者遍历会有帮助吗?但这样做会很困难,这样我就可以减少warpVision()函数所用的时间。

推荐答案

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

方法是:

  1. 计算矩阵,然后将 用于查找输出图像尺寸的原始图像。

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

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

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

但是,如果您使用的是Python,那么您的实现可能比warpVision()更慢,因此您可以考虑使用C++。另一件事是OpenCV使用C++编译器,我非常肯定在OpenCV中实现warpVision()是非常高效的。

所以,我认为你可以绕过warpVision(),但是,我不确定你是否可以在没有任何提升(如GPU、强大的CPU等)的情况下,比OpenCV更快:)

祝你好运!

这篇关于OpenCV扭曲透视的替代方案的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆