前提・実現したいこと
Android開発2か月目の初心者です。
opencv4android(https://sourceforge.net/projects/opencvlibrary/files/opencv-android/3.4.3/)のサンプルopenCvTutrial1をベースに自分用のアプリを開発しようとしています。試しにHuawayのnova lite2で動かすと、解像度(カメラ解像度?)が19201080になって、23fpsほどで動いてます。これを30fps以上で動かすために解像度を640480かまたは320*240に変更したいのですが、どうすれば変更できるか分かりません。どなたか判る方教えていただけないでしょうか。
ソース
### MainActivity.java
package org.opencv.samples.tutorial1;
import org.opencv.android.BaseLoaderCallback;
import org.opencv.android.CameraBridgeViewBase.CvCameraViewFrame;
import org.opencv.android.LoaderCallbackInterface;
import org.opencv.android.OpenCVLoader;
import org.opencv.core.Mat;
import org.opencv.android.CameraBridgeViewBase;
import org.opencv.android.CameraBridgeViewBase.CvCameraViewListener2;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SurfaceView;
import android.view.WindowManager;
import android.widget.Toast;
import static org.opencv.android.CameraBridgeViewBase.CAMERA_ID_FRONT;
public class MainActivity extends Activity implements CameraBridgeViewBase.CvCameraViewListener {
private static final String TAG = "OCVSample::Activity";
private CameraBridgeViewBase mOpenCvCameraView;
private boolean mIsJavaCamera = true;
private MenuItem mItemSwitchCamera = null;
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) { @Override public void onManagerConnected(int status) { switch (status) { case LoaderCallbackInterface.SUCCESS: { Log.i(TAG, "OpenCV loaded successfully"); mOpenCvCameraView.enableView(); } break; default: { super.onManagerConnected(status); } break; } } }; public MainActivity() { 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); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); setContentView(R.layout.tutorial1_surface_view); mOpenCvCameraView = (CameraBridgeViewBase) findViewById(R.id.tutorial1_activity_java_surface_view); mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE); mOpenCvCameraView.setCvCameraViewListener(this);
// mOpenCvCameraView.setCameraIndex(CAMERA_ID_FRONT);
} @Override public void onPause() { super.onPause(); if (mOpenCvCameraView != null) mOpenCvCameraView.disableView(); } @Override public void onResume() { super.onResume(); if (!OpenCVLoader.initDebug()) { Log.d(TAG, "Internal OpenCV library not found. Using OpenCV Manager for initialization"); OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_0_0, this, mLoaderCallback); } else { Log.d(TAG, "OpenCV library found inside package. Using it!"); mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS); } } public void onDestroy() { super.onDestroy(); if (mOpenCvCameraView != null) mOpenCvCameraView.disableView(); } public void onCameraViewStarted(int width, int height) { } public void onCameraViewStopped() { } public Mat onCameraFrame(Mat inputFrame) { return inputFrame; }
}
補足情報(言語/FW/ツール等のバージョンなど)
PC:Windous10 64bitデスクトップ
AndroidStudio:3.2.1 for Windows 64-bit
OpenCV:3.4.3
openCvTutrial1のソースを転載しても良いのかわからなかったので、今回は載せてません。
やはりないと不便なので、載せてみました。