1

私はネイティブ コードで cv::VideoCapture を使用していますが、それに問題があります: Android Java コードでは、Videocapture は Yuv420 フレームを提供し、ネイティブ コードでは BGR フレームです。私は灰色の画像が必要なので、Yuv 画像を持っている方が良いでしょう (Yuv を GRAY に変換するのにコストはかからなかったと読みました)。

ここに私の質問があります:

Asus TF201 を使用している im では、フレームの取得に約 26 ミリ秒かかります。標準の Android カメラ API が Yuv に与えるように、VideoCapture のネイティブ バージョンは変換を実行しますか? (これは時間コストを説明します)

CV_CAP_PROP_FORMAT でフォーマットを変更することは可能ですか? mycapture.get(CV_CAP_PROP_FORMAT) を試すたびに、アプリがクラッシュします...

編集:アンドレイ・カマエフがこれに答えました。2番目の引数に引数を追加するグラブ/取得メソッドを使用する必要があります:

capture.retrieve(frame, CV_CAP_ANDROID_GRAY_FRAME);

ありがとう

4

1 に答える 1

1

Android 用の OpenCV サンプルを見てください。それらのほとんどは、VideoCaptureオブジェクトから灰色の画像を取得しています:

capture.retrieve(mGray, Highgui.CV_CAP_ANDROID_GREY_FRAME);

内部的に、この灰色の画像は、余分なコピーをしなくても、最も効率的な方法で yuv420 フレームから「変換」されます。

于 2012-06-07T08:41:36.183 に答える