我正在使用 opencv warpPerspective() 函数来扭曲图像中找到的 countour 以查找轮廓,我正在使用 findContours()。
如下图所示:
但是 warpPerspective() 函数需要“更多时间”才能扭曲到完整图像,是否有任何替代方法可以将图像中的对象扭曲为完整图像,如图所示。
或者遍历会有帮助吗?但这很难做到,这样我就可以减少 warpPerspective() 函数所花费的时间。
你可以尝试做rotation https://en.wikipedia.org/wiki/Rotation_matrix and 翻译 https://en.wikipedia.org/wiki/Translation_(geometry)矩阵(或旋转平移矩阵,两者的组合),可以根据需要扭曲图像。函数 warpPerspective() 使用类似的方法,因此您基本上将有机会查看函数内部。
方法是:
您计算矩阵,然后乘以高度和宽度
原始图像来查找输出图像的尺寸。
遍历原始图像中的所有像素并将它们相乘
矩阵 R 的 (x,y) 坐标
(旋转/平移/旋转平移矩阵)以获得
输出图像上的坐标 (xo,yo)。
在每个计算的坐标 (xo,yo) 上分配值
对应的原始图像坐标(x,y)。
使用中值滤波器/双线性/双三次/等进行插值。方法如
有时输出图像上可能会留下空点
但是,如果您使用 Python,您的实现可能比 warpPerspective() 还要慢,因此您可以考虑使用 C++。另一件事是 OpenCV 使用 C++ 编译器,我非常确定 OpenCV 中 warpPerspective() 的实现非常高效。
所以,我认为你可以绕过 warpPerspective(),但是,我不确定你是否可以比 OpenCV 更快地完成它,而无需任何增强(例如 GPU、强大的 CPU 等):)
祝你好运!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)