2012-10-27 120 views
4

在Android项目中,我试图捕获视频并实时处理它(如Kinect)。我尝试了两种方法:使用OpenCV保持调用mCamera.grab()和capture.retrieve(mRgba,Highgui.CV_CAP_ANDROID_COLOR_FRAME_RGBA);或Android的相机保持捕捉图像。为什么在Android上,OpenCV摄像头在捕捉视频时比Android摄像头更快

我觉得OpenCV相机捕捉图像的能力比Android更快。但为什么?

+0

如果您使用“capture”,即takePicture(),您肯定会得到缓慢的响应。实时处理视频应该通过使用'onPreviewFrame [setPreviewCallbackWithBuffer()](http://developer.android.com/reference/android/hardware/Camera.html#setPreviewCallbackWithBuffer(android.hardware.Camera.PreviewCallback))完成。 ()'回调。 –

+0

奇怪的是,我有相反的经历,opencv相机显然比android更慢。 +1到@Alex,可能songyy没有使用缓冲区回调。 – Wang

+0

你应该使用原生摄像头视图,但速度非常快。 – Mustafa

回答

5

OpenCV使用黑客来获得低级别的Android相机。它允许避免在本地层和托管层之间进行数据拷贝和转换。

+5

嗨安德烈,这听起来很有趣,你能解释一下更多的细节吗? –