Android OpenCV旋转相机改变屏幕分辨率

时间:2016-07-27 16:52:53

标签: android opencv camera

我正在开发一款适用于Android手机的OpenCV应用,可以进行繁重的图像处理。因此,我想将屏幕分辨率限制为640x480以挤出额外的fps。但是,如果我将相机旋转90度到横向模式,屏幕分辨率将变为1920x1080,我不知道如何解决这个问题。这是我初始化相机的主要活动代码:

private MainView mOpenCvCameraView;

private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
    @Override
    public void onManagerConnected(int status) {
        switch(status) {
            case LoaderCallbackInterface.SUCCESS:
            {
                Log.i(TAG, "Loaded Successfully");
                mOpenCvCameraView.enableView();
                mOpenCvCameraView.setMaxFrameSize(640, 480);
                System.loadLibrary("opencvnative");

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

MainView基本上是JavaCameraView,我定义了一个额外的方法:

public class MainView extends JavaCameraView {

    public MainView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }


    @SuppressWarnings("deprecation")
    public void lockAutoExposure() {
        Camera.Parameters params = mCamera.getParameters();
        params.setExposureCompensation(params.getExposureCompensation());
        params.setAutoExposureLock(true);
        mCamera.setParameters(params);
    }


}

最后,清单中的相关代码:

<application
    android:allowBackup="true"
    android:hardwareAccelerated="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:screenOrientation="landscape"
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
    ...

此外,在纵向模式下启动应用程序时,摄像机视图会旋转90度。我希望在纵向模式下返回直立帧,并在横向模式下返回旋转帧,就像普通相机应用程序一样。

0 个答案:

没有答案