简体   繁体   English

使用 OpenCV 打开 Android 原生相机

[英]Open the Android native Camera using OpenCV

I just need to know about how can I start with this actually I need to open the Android native camera using opencv.我只需要知道如何开始,实际上我需要使用 opencv 打开 Android 原生相机。

Where can I find the related docs or any helping material?我在哪里可以找到相关文档或任何帮助材料? I have setup my eclipse working with the opencv sample projects!我已经使用 opencv 示例项目设置了我的 Eclipse!

Have a look at the shipped opencv samples in opencv/samples/android/, there you should be able to find a few good examples.查看 opencv/samples/android/ 中随附的 opencv 示例,您应该可以在那里找到一些很好的示例。 Here is also a link to the docs that shows how to open the camera .这里还有一个链接,指向显示如何打开相机的文档。 Don't forget to request the permissions to access the camera.不要忘记请求访问相机的权限。

Short version, see the link for full details: Add a layout:简短版本,请参阅链接以获取完整详细信息:添加布局:

<org.opencv.android.JavaCameraView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:visibility="gone"
    android:id="@+id/HelloOpenCvView"
    opencv:show_fps="true"
    opencv:camera_id="any" />

Init procedure:初始化程序:

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;
        }
    }
};

@Override
public void onResume()
{
    super.onResume();
    OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mLoaderCallback);
}

Implement CVFrameListener2 interface:实现 CVFrameListener2 接口:

 private CameraBridgeViewBase mOpenCvCameraView;

 @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.HelloOpenCvLayout);
     mOpenCvCameraView = (CameraBridgeViewBase) findViewById(R.id.HelloOpenCvView);
     mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE);
     mOpenCvCameraView.setCvCameraViewListener(this);
 }

 @Override
 public void onPause()
 {
     super.onPause();
     if (mOpenCvCameraView != null)
         mOpenCvCameraView.disableView();
 }

 public void onDestroy() {
     super.onDestroy();
     if (mOpenCvCameraView != null)
         mOpenCvCameraView.disableView();
 }

 public void onCameraViewStarted(int width, int height) {
 }

 public void onCameraViewStopped() {
 }

 public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
     return inputFrame.rgba();
 }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM