2012-10-27 54 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

嗨安德烈,這聽起來很有趣,你能解釋一下更多的細節嗎? –