Android 如何通过不处理每一帧来提高fps,从而有效地使用onCameraFrame函数
我正在开发一个增强现实Android应用程序。在未进行任何处理时,我获得约20帧的fps,在运行ARFilter(设备:ASUS TRANSFORMER PAD TF700T)时,获得约3帧的fps。我分别使用ORB、FRANK和BRUTEFORCE HAMMING进行检测、描述和匹配。我试图通过setMaxFrameSize(640480)设置分辨率;但我只能增加1个百分点。我应该使用计数器吗?当计数器运行“onCameraFrame”函数时,实际会发生什么Android 如何通过不处理每一帧来提高fps,从而有效地使用onCameraFrame函数,android,opencv,computer-vision,Android,Opencv,Computer Vision,我正在开发一个增强现实Android应用程序。在未进行任何处理时,我获得约20帧的fps,在运行ARFilter(设备:ASUS TRANSFORMER PAD TF700T)时,获得约3帧的fps。我分别使用ORB、FRANK和BRUTEFORCE HAMMING进行检测、描述和匹配。我试图通过setMaxFrameSize(640480)设置分辨率;但我只能增加1个百分点。我应该使用计数器吗?当计数器运行“onCameraFrame”函数时,实际会发生什么 @Override pub
@Override
public Mat onCameraFrame(final CvCameraViewFrame inputFrame) {
final Mat rgba = inputFrame.rgba();
if (ARFil != null) {
// if (counter % 10 == 0) {
ARFil[ARFilInd].apply(rgba, rgba);
// }
// addCounter();
}
return rgba;
}
// Added method addCounter()
/*
* private void addCounter() { if (counter > 20) { counter = 0;
*
* } counter++;
*
* }
*/
提前感谢:)我知道已经很晚了,但如果能帮上忙,我有一些假设:
- 您可能需要进一步减小图像大小李>
- 您可能需要将匹配的功能数量限制为较低的阈值李>
- 您可能需要将一些代码转换为NEON以实时运行,或者转换为GPU李>
- 您可能需要更改正在使用的算法,以降低圈复杂度李>
- “怪物”的速度不够快,不适合实时移动,所以我会选择DAISY之类的东西李>
不知道在构建应用程序时是否激活了编译器优化,但它们确实是必需的(如果你至少使用C++)。