2011-12-09 10 views
2

ネイティブ側で画像処理を実行するアプリケーションを開発しており、Java側から各フレームのカメラデータを受け取ります。Androidでカメラプレビューのサイズが異なる

問題は、JVMのメモリからネイティブのイメージにイメージをコピーするのに本当に多くの時間がかかることです。

質問:異なるプレビューサイズ、つまりSurfaceViewのビデオフレームを表示するためのサイズが大きく、処理のための別の小さいサイズを使用することは可能ですか?

答えて

0

通常、Camera.ParametersクラスのsetPreviewSize()メソッドを使用します。このような

何か:cameraは、画像を表示するCameraオブジェクトです

... 
Camera.Parameters mParams = camera.getParameters(); 
List<Camera.Size> previewSizes = mParams.getSupportedPreviewSizes(); 
Camera.Size previewSize = previewSizes.get(previewSizes.size()-1); 
mParams.setPreviewSize(previewSize.width, previewSize.height); 
mParams.setPreviewFrameRate(15); // get 15 preview frames per second 
camera.setParameters(mParams); 
... 

これはSurfaceViewのsurfaceChangedメソッドにあります。これにより、Camera.PreviewCallbackの実装のプレビューサイズが変更され、カメラのYUV画像(または使用する携帯電話が十分に運べる場合はビットマップ画像)がキャプチャされます。画面に表示される画像には影響しません。

+0

実際には画面上の画像サイズに直接影響しています。 – givi

+0

この例は、カメラがサポートしている最小のサイズです。ドキュメンテーションは、カメラ自体のプレビューには影響を与えず、集められた画像のみに影響を与えないことを示唆していました。私は二番目に大きいプレビューサイズを過ぎたことは一度もなかったので、私はその主張を完全にテストしたことはありません。あなたはそれを使って実験をすることができます。たぶん可能な限り小さくするのではなく、if(previewSizes.size()> 0)previewSizes.get(1) 'を実行してください。 – DeeV

関連する問題