为什么在Android上,OpenCV摄像头在捕获视频时比Android摄像头快

为什么在Android上,OpenCV摄像头在捕获视频时比Android摄像头快,android,opencv,android-camera,video-capture,Android,Opencv,Android Camera,Video Capture,在Android上的一个项目中,我试图捕捉视频并实时处理它(就像Kinect一样)。我尝试了两种方法:使用OpenCV不断调用mCamera.grab()和capture.retrieve(mRgba、Highgui.CV\u CAP\u ANDROID\u COLOR\u FRAME\u RGBA);或者安卓的摄像头,通过不断捕捉图像 我觉得OpenCV相机比Android相机捕捉图像的速度更快。但是为什么呢?OpenCV使用黑客技术获得对Android摄像头的低级别访问。它可以避免在本机层和

在Android上的一个项目中,我试图捕捉视频并实时处理它(就像Kinect一样)。我尝试了两种方法:使用OpenCV不断调用mCamera.grab()和capture.retrieve(mRgba、Highgui.CV\u CAP\u ANDROID\u COLOR\u FRAME\u RGBA);或者安卓的摄像头,通过不断捕捉图像


我觉得OpenCV相机比Android相机捕捉图像的速度更快。但是为什么呢?

OpenCV使用黑客技术获得对Android摄像头的低级别访问。它可以避免在本机层和托管层之间进行多次数据复制和转换。

嗨,Andrey,这听起来很有趣,你能解释一下更多的细节吗?如果你使用“捕获”,即takePicture(),你肯定会得到很慢的响应。实时处理视频应该通过
onPreviewFrame()
callback来完成。奇怪的是,我有相反的经验,opencv相机明显比android相机慢+1到@Alex,可能songyy没有使用带缓冲区的回调。不过你应该使用本机相机视图,速度非常快。