在Android中使用OpenCV

1. OpenCV介绍

Open Source Computer Vision Library 

https://opencv.org

https://github.com/opencv/opencv

https://en.wikipedia.org/wiki/OpenCV

 

2. 下载OpenCV

https://sourceforge.net/projects/opencvlibrary/files/3.4.9/opencv-3.4.9-android-sdk.zip/download

 

3. 解压OpenCV

在Android中使用OpenCV_第1张图片

解压后得到

在Android中使用OpenCV_第2张图片

 

4. 导入OpenCV

在Android Studio中,File - New - Import Module

选择.../OpenCV-android-sdk/sdk/java文件夹(Module name自由填写)

默认去Next + Finish即可

 

5. 配置build.gradle

将app/build.gradle与opencv/build.gradle保持一致,其中包括compileSdkVersion、buildToolsVersion、minSdkVersion、targetSdkVersion

 

6. 复制libs

在app/src/main目录下创建一个jniLibs目录,然后把解压文件夹.../OpenCV-android-sdk/sdk/native/libs文件夹下的全部文件copy到刚才创建的jniLibs下

 

7. 添加Dependencies

为app添加Module Dependency

在Android中使用OpenCV_第3张图片

选择openCVLibrary

在Android中使用OpenCV_第4张图片

点击Make Project

 

8. 初始化OpenCV

在Android项目使用openCV需要在使用前先初始化


    //openCV初始化的callback
    private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
        @Override
        public void onManagerConnected(int status) {
            super.onManagerConnected(status);
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Screen.initialize(this);
        setContentView(R.layout.activity_opengl);

        init();
        //初始化openCV
        OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION, getApplicationContext(), mLoaderCallback);
    }

 

9. 下载并安装OpenCV Manager

https://apd.shouji.com.cn/cdn/shouji/xmm/OpenCVManager_V3.10.apk

如果不想安装该app,网上也有许多免安装教程可以参考

 

10. 测试运行OpenCV的demo

package com.facepp.demo.util;

import android.graphics.Bitmap;

import org.opencv.android.Utils;
import org.opencv.core.Mat;
import org.opencv.imgproc.Imgproc;

public class ImageCV {
    public Bitmap convert2Grey(Bitmap originBitmap) {
        Mat firstMat = new Mat();
        Mat temp = new Mat();
        Mat lastMat = new Mat();
        Bitmap outputBitmap = originBitmap.copy(originBitmap.getConfig(), true);
        Utils.bitmapToMat(originBitmap, firstMat);
        Imgproc.cvtColor(firstMat, temp, Imgproc.COLOR_RGB2BGR);
        Imgproc.cvtColor(temp, lastMat, Imgproc.COLOR_BGR2GRAY);
        Utils.matToBitmap(lastMat, outputBitmap);
        return outputBitmap;
    }
}

该代码输入一个Bitmap对象(图),并输出一个变灰色的Bitmap对象(图)

原图

输出

你可能感兴趣的:(Android,图像处理)