Android用のアプリを開発しようとしていますが、カメラからできるだけ高い解像度の非圧縮画像を取得する必要があります。takePictureのrawCallbackとpostviewCallbackを試しましたが、機能しません。
現在、VideoCaptureを使用してOpenCV(バージョン2.4)を試していますが、デフォルトの960x720のままです。これは、必要なものには不十分です。私の携帯電話であるSamsungGalaxyS3は、理論的には最大8Mpx(Wikipediaによると、写真の場合は3,264×2,448、ビデオの場合は1,920×1,080)を提供できます。VideoCapture.set(Highgui.CV_CAP_PROP_FRAME_WIDTH / HEIGHT、いくつかの数値)は、私が見つけた限り、カメラが黒い画像を返すようにします。
OpenCVまたはAndroidAPIを使用して、圧縮せずに、より高い解像度を取得する方法はありますか?
これまでに質問されたことがある場合は、本当に申し訳ありません。私は何日も探していましたが、何も見つかりませんでした。
お時間をいただきありがとうございます!
編集:それは私が求めていたものとは正確には異なりますが、非常によく似た方法があることがわかりました。setPreviewCallbackを使用してカメラにOnPreviewCallbackを設定すると、カメラから生の画像データを取得します(少なくとも私が使用しているS3では)。将来誰かが役立つと思った場合に備えて、ここに残しておきます。
編集:部分的な解決策は、以下の回答で説明されています。総括する、
vc.set(Highgui.CV_CAP_PROP_FRAME_WIDTH, desiredFrameWidth);
vc.set(Highgui.CV_CAP_PROP_FRAME_HEIGHT, desiredFrameHeight);
いくつかの条件下で動作します。詳細については、以下を参照してください。