为什么在 Android 上使用 OpenCV 相机捕获视频比 Android 相机更快

4
在一个Android项目中,我正在尝试捕获视频并实时处理它(就像Kinect一样)。我尝试了两种方法:使用OpenCV不断调用mCamera.grab()和capture.retrieve(mRgba,Highgui.CV_CAP_ANDROID_COLOR_FRAME_RGBA)来进行捕获;或者使用Android的相机不断捕获图像。
我感觉OpenCV相机能够更快地捕获图像,但是为什么呢?

如果你使用“capture”,即takePicture(),你肯定会得到缓慢的响应。实时处理视频应该通过setPreviewCallbackWithBuffer()和onPreviewFrame()回调函数来完成。 - Alex Cohn
奇怪的是,我的经验恰好相反,opencv相机明显比安卓相机慢。+1 给 @Alex,也许songyy没有使用回调和缓冲区。 - Wang
你应该使用本地相机视图,它非常快。 - Mustafa
1个回答

5

OpenCV使用一种技巧来获取对Android相机的低级访问权限。 这允许避免在本地和托管层之间进行多次数据复制和转换。


5
嗨Andrey,听起来非常有趣,你能否详细介绍一下具体做了什么? - Rui Marques

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接