1

Android用のOpenCV 2.4.10を使用して、Google Glassのペアでカメラから高解像度フレーム(1280x720)をキャプチャしようとしています。アクティビティに を実装し、メソッドCameraBridgeViewBase.CvCameraViewListener2でフレームを取得しようとしました。onCameraFrameこれまでのところ、すべてがうまく機能し、512x288 の Mat オブジェクトが得られました。

私の問題は、512x288 の解像度では、必要な解像度が十分に得られないことです。そこで、OpenCV を使用したサンプル 3 と同じ方法でプロジェクトをセットアップしようとしました: http://goo.gl/iDyqQj。問題は、512x288 未満の解像度でしか機能しないことです。解像度をこのレベルより高くするとすぐに、デフォルトで 512x288 に戻ります (通知なし)。

OpenCV がフレーム サイズを最大画面解像度に制限しているといういくつかの提案http://goo.gl/X2wtM4を見つけました。しかし、Google Glass の画面の解像度は 640x360 である必要がありますか? 回答に記載されているとおりに実行しようとしましたが、calculateCameraFrameSize512x288 より大きい Size-object をオーバーライドして返すと、歪んだフレームが表示されます (ただし、寸法が大きい場合は以下を参照してください)。

歪んだ画像

OpenCV を使用して Google Glass でより高いキャプチャ解像度をキャプチャする方法について誰か提案がありますか?

4

1 に答える 1

2

だから私は解決策を見つけました。2つの別々の問題のようです。私の質問で考えたようにcalculateCameraFrameSize、JavaCameraView でオーバーライドして、デバイスの画面よりも高い解像度を取得できるようにする必要がありますonCameraFrame。これは明らかに OpenCV による設計上の選択であり、バージョン 2.4.5 以降です。これが、より高い解像度のフレームを取得できなかった理由です。

高解像度のフレームを取得できるようになりましたが、ほとんどのプレビュー サイズではまだ歪んでいます。これは GDK のバグで、かなり前から知られていました (私が正しく理解していれば XE10 以降) が、まだ修正されていません。幸いなことに、回避策があります。setPreviewFpsRangeこの問題は、カメラを取得した後にプレビューの FPS を手動で設定することで回避できます。

Camera.Parameters params = camera.getParameters();
params.setPreviewFpsRange(30000, 30000);
camera.setParameters(params);
于 2015-04-20T13:57:18.223 に答える