Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 最大的摄像头抓取和显示性能_Android_C++_Opencv_Opengl Es_Android Ndk - Fatal编程技术网

Android 最大的摄像头抓取和显示性能

Android 最大的摄像头抓取和显示性能,android,c++,opencv,opengl-es,android-ndk,Android,C++,Opencv,Opengl Es,Android Ndk,我对这个话题做了很多研究,但似乎我做错了什么,或者我的理解有点偏离了方向 我只是想获得最佳性能(例如,以FPS为单位),从我的Android驱动的智能手机上抓取高质量图像,并直接向用户显示,无需任何修改 因为我有一部功能相当强大的智能手机(Nexus4),所以我认为这应该是一项微不足道的任务。但我所有的努力都没有得到回报。例如,使用最新的OpenCV框架,对于800x480流,我只实现了约10 FPS 那么,仅仅从我手机的摄像头抓取和显示高质量的视频就可以达到>25FPS的速度吗?如果是,那么最

我对这个话题做了很多研究,但似乎我做错了什么,或者我的理解有点偏离了方向

我只是想获得最佳性能(例如,以FPS为单位),从我的Android驱动的智能手机上抓取高质量图像,并直接向用户显示,无需任何修改

因为我有一部功能相当强大的智能手机(Nexus4),所以我认为这应该是一项微不足道的任务。但我所有的努力都没有得到回报。例如,使用最新的OpenCV框架,对于800x480流,我只实现了约10 FPS

那么,仅仅从我手机的摄像头抓取和显示高质量的视频就可以达到>25FPS的速度吗?如果是,那么最好的策略是什么?也欢迎考虑特定于设备的因素

我使用的资源:

更新: 我已经能够将抓取性能提高到几乎恒定~25FPS@1280x720使用和作为相机接收器时,只需简单地设置

但我想知道是否有可能进一步提高性能。我尝试使用不同的预览格式,但运气不好。也许在我不知道的抓取性能上有一个隐含的上限


不过,我会继续研究,并随时通知你。各种信息仍然欢迎

限制因素是移动大量数据的速度有多快。也有类似的讨论。您有三个任务:(1)获取图像,(2)保存图像(“捕获”),和(3)显示图像。(如果我误解了你的问题,而你不需要#2,那么相机的
曲面
预览模式将以高速完成你想要的功能。)

Android 4.3上提供的一种内存带宽有效的方法是将相机的
表面
预览输入AVC编码器,保存编码的MPEG流,然后解码帧以显示。摄像机的缓冲区可以输入到
MediaCodec
编码器,而无需复制缓冲区或将数据转换为其他格式。(参见示例。)此方法可能与您声明的目标之一不兼容:应用于每个帧的压缩可能会将质量降低到可接受的水平以下


如果需要保持帧的“完整”,则必须复制数据,可能需要多次,然后将其写入磁盘。帧越大,需要移动的数据越多,移动速度也越慢。例如,相机捕获数据并将其写入本机缓冲区;将本机缓冲区复制到Dalvik VM的托管缓冲区;将缓冲区写入磁盘;YUV转换为RGB;通过将数据上传到纹理并进行渲染,RGB将显示在屏幕上。

不知道,只需添加注释即可获得结果通知;)(相比之下,我廉价的trekstor平板电脑的速度为15fps(640x480)在没有任何处理的情况下,ocv245openCV在我看来一直是草率的-当你尝试在没有它的情况下进行流式处理时会发生什么?另一个要使用的资源:你看了吗?你也可以在openGL中使用SurfaceTexture和你自己的纹理。希望这可以提供很好的速度,因为它使用硬件加速,但没有衡量我的性能自我思考非常感谢“记录提示”提示!!感谢您的详细解释,我将研究一下,看看这与我目前的方法相比如何。