应用透视变换的最快方法

时间:2016-01-20 16:18:36

标签: android opencv opengl-es bitmap

我已经实施了某种自我实现的应用程序。为此,我必须对位图应用透视变换。

第一次尝试时,我使用OpenCV实现了所有功能,结果并不是那么糟糕。我的Bitmap的预期转换平均需要140ms,但这仅适用于具有可靠硬件资源的设备。

如何让我的转型更快?我应该尝试在OpenGL中实现它吗?或者在onDraw()的{​​{1}}函数中应用转换也会更快?或者任何不同的建议?

1 个答案:

答案 0 :(得分:0)

这取决于您的位图的呈现方式。我假设ImageView无论如何都在幕后使用OpenGL渲染位图,在这种情况下,你想在onDraw函数中(或之前)设置转换。

自己转换位图(使用OpenCV或OpenGL),然后通过ImageView再次渲染它是浪费时间,除非ImageView根本不支持转换(这很奇怪) 。

http://developer.android.com/reference/android/widget/ImageView.html 建议您拨打ImageView.setImageMatrix。 您需要传入透视投影矩阵,可以使用Matrix.perspectiveM http://developer.android.com/reference/android/opengl/Matrix.html#perspectiveM(float[],%20int,%20float,%20float,%20float,%20float)创建或手动指定(通常不需要)。