4

opencv を使用してビデオをフルスクリーンに設定しようとしています。入力はカメラから来ています。中央の画面に表示されますが、全画面表示ではありません。関連コード:

public class Sample3Native extends Activity implements CvCameraViewListener {
private static final String TAG = "OCVSample::Activity";

private Mat                    mRgba;
private Mat                    mGrayMat;
private Mat                    mFinalMat;

private CameraBridgeViewBase   mOpenCvCameraView;


private BaseLoaderCallback     mLoaderCallback = new BaseLoaderCallback(this) {
    @Override
    public void onManagerConnected(int status) {
        switch (status) {
            case LoaderCallbackInterface.SUCCESS:
            {
                Log.i(TAG, "OpenCV loaded successfully");

                // Load native library after(!) OpenCV initialization
                System.loadLibrary("native_sample");




                mOpenCvCameraView.enableView();



            } break;
            default:
            {
                super.onManagerConnected(status);
            } break;
        }
    }
};

public Sample3Native() {
    Log.i(TAG, "Instantiated new " + this.getClass());
}

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    Log.i(TAG, "called onCreate");
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

    setContentView(R.layout.tutorial3_surface_view);

    mOpenCvCameraView = (CameraBridgeViewBase) findViewById(R.id.tutorial4_activity_surface_view);
    mOpenCvCameraView.setCvCameraViewListener(this);


}

私は使用してみました:

//mOpenCvCameraView.setScaleX(0.8f);
                   // mOpenCvCameraView.setScaleY(0.4f);

                //mOpenCvCameraView.setMinimumHeight(800);
               // mOpenCvCameraView.setMinimumWidth(1000);

しかし、それは機能しません。

フレームを伸ばして画面全体を埋めるにはどうすればよいですか?

4

6 に答える 6

4

利用可能な解像度のリストを取得するか、手動でセットアップできます。

利用可能なサイズのリストを取得し、最適なカメラ サイズを取得する場合。

   if (mOpenCvCameraView != null) {
        List<Size> sizes = mOpenCvCameraView.getSupportedPreviewSizes();
        int mFrameWidth = width;
        int mFrameHeight = height;

        // selecting optimal camera size
        {

            double minDiff = Double.MAX_VALUE;
            for (Size size : sizes) {
                if (Math.abs(size.height - height) < minDiff) {
                    mFrameWidth = (int) size.width;
                    mFrameHeight = (int) size.height;
                    minDiff = Math.abs(size.height - height);
                }
            }
        }

        mOpenCvCameraView.set(Highgui.CV_CAP_PROP_FRAME_WIDTH, mFrameWidth);
        mOpenCvCameraView.set(Highgui.CV_CAP_PROP_FRAME_HEIGHT, mFrameHeight);
    }

最適なカメラ サイズがフルスクリーンでない場合、カメラがサポートする最適なサイズをリストから簡単に取得できます。

他のオプションは、手動でサイズを設定することです:

        mOpenCvCameraView.set(Highgui.CV_CAP_PROP_FRAME_WIDTH, 1000);
        mOpenCvCameraView.set(Highgui.CV_CAP_PROP_FRAME_HEIGHT, 800);

コードのソースは、顔検出 OpenCV バージョン 2.4.2 からのものです。

于 2012-11-14T11:32:21.710 に答える
2

ここでググって解像度を変更したいだけの人は、

mOpenCvCameraView.set(Highgui.CV_CAP_PROP_FRAME_WIDTH, 1000)メソッドが機能していません。

使ってみてmOpenCvCameraView.setMaxFrameSize(640, 480);

OCV4Android2.4.5、チュートリアル2、混合処理で動作します。

于 2013-07-08T08:48:12.063 に答える
1

まだこれを探している人のために、私は問題を解決しました(並べ替え)。これをOpenCV v 2.4.3で機能させることができないようです。私はインターネットですべてを試しました。ただし、OpenCV 2.4.3.2 では、カメラのサイズを設定する方法が追加されました。

disconnectCamera();
mMaxHeight = //your desired height
mMaxWidth = //your desired width
connectCamera(mMaxWidth, mMaxHeight);

OpenCV チュートリアル 5、特に SampleJavaCameraView -> setResolution メソッドを確認してください。

于 2013-02-01T17:46:38.107 に答える
-2

この置換を試してください

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

onCreate のコード

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
                            WindowManager.LayoutParams.FLAG_FULLSCREEN);
于 2012-11-14T11:54:10.357 に答える