我正在开发一款适用于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度。我希望在纵向模式下返回直立帧,并在横向模式下返回旋转帧,就像普通相机应用程序一样。