我已经实施了某种自我实现的应用程序。为此,我必须对位图应用透视变换。
第一次尝试时,我使用OpenCV实现了所有功能,结果并不是那么糟糕。我的Bitmap的预期转换平均需要140ms,但这仅适用于具有可靠硬件资源的设备。
如何让我的转型更快?我应该尝试在OpenGL中实现它吗?或者在onDraw()
的{{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)创建或手动指定(通常不需要)。