2014年1月17日金曜日

Android OpenCV カメラビュー

Android アプリ開発 OpenCV カメラビュー

OpenCV を用いたカメラビューのサンプルコード

Android for OpenCVを使ってカメラビューおよびビューをMatで取り込む方法
取り込んだ画像からいろいろな変換などができます。

/*-------------------------------------------------------------------------------------------------------------------

public class MainActivity extends Activity implements CvCameraViewListener{
    private CameraBridgeViewBase mCameraView;
    private Mat mOutputFrame;
 
    private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
        @Override
        public void onManagerConnected(int status) {
            switch (status) {
            case LoaderCallbackInterface.SUCCESS:
                mCameraView.enableView();
                break;
            default:
                super.onManagerConnected(status);
                break;
            }
        }
    };
   
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
   getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
      requestWindowFeature(Window.FEATURE_NO_TITLE);
      setContentView(R.layout.activity_main);
      mCameraView = (CameraBridgeViewBase)findViewById(R.id.camera_view);
      mCameraView.setCvCameraViewListener(this);
 }

    @Override
    public void onResume() {
        super.onResume();
        OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_6, this, mLoaderCallback);
    }
 
    @Override
    public void onPause() {
        super.onPause();
        if (mCameraView != null) {
            mCameraView.disableView();
        }
    }
   
    @Override
    public void onDestroy() {
        super.onDestroy();
        if (mCameraView != null) {
            mCameraView.disableView();
        }
    }
   
    @Override
    public void onCameraViewStarted(int width, int height) {
        mOutputFrame = new Mat(height, width, CvType.CV_8UC1);
      }
   
    @Override
    public void onCameraViewStopped() {
     if(mOutputFrame != null)mOutputFrame.release();
     mOutputFrame = null;
   }
 @Override
 public Mat onCameraFrame(Mat inputFrame) {
     //ここでビューから取り込んだ画像を取得できる
        return inputFrame;
 }
}

--------------------------------------------------------------------------------------*/

activity_main.xml

/*-----------------------------------------------------------------------------------

<RelativeLayout xmlns:android=http://schemas.android.com/apk/res/android
    xmlns:tools=http://schemas.android.com/tools
    xmlns:opencv=http://schemas.android.com/apk/res-auto
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:keepScreenOn="true"
    tools:context=".MainActivity" >
   
  <org.opencv.android.JavaCameraView
    android:id="@+id/camera_view"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:visibility="visible"
    opencv:camera_id="any"
    opencv:show_fps="true" />

</RelativeLayout>

------------------------------------------------------------------------------------------*/

0 件のコメント:

コメントを投稿