Android Opencv 之 Android Studio 进行 opencv ( 4.2.0) 环境搭建,并简单进行图片灰度处理demo

Android Opencv 之 Android Studio 进行 opencv 4.2.0 环境搭建,并简单进行图片灰度处理demo

 

目录

Android Opencv 之 Android Studio 进行 opencv 4.2.0 环境搭建,并简单进行图片灰度处理demo

一、简单介绍

二、注意实现

三、Opencv for Android 下载

四、Android Studio (我的版本是3.6.2)新建一个工程

五、在Android Studio 工程中引入 Opencv 420

六、Android Studio 项目中 测试 opencv 功能,验证 opencv 导入成功与否

七、关键代码


 

一、简单介绍

在 Android 使用 opencv,进行图片处理。

本节介绍,如何在 Android 搭建 opencv 环境,并简单的demo测试在 Android 上使用 opencv

 

二、注意实现

1、在使用的时候,把 opencv 模块中的 build.gradle 保持与引用的工程的 build.gradle 一致,不然打包的apk可能无法正常使用哈

 

三、Opencv for Android 下载

1、百度搜索 opencv,进入 官网

Android Opencv 之 Android Studio 进行 opencv ( 4.2.0) 环境搭建,并简单进行图片灰度处理demo_第1张图片

Android Opencv 之 Android Studio 进行 opencv ( 4.2.0) 环境搭建,并简单进行图片灰度处理demo_第2张图片

 

2、进入官网点击 Release,找到 Android

Android Opencv 之 Android Studio 进行 opencv ( 4.2.0) 环境搭建,并简单进行图片灰度处理demo_第3张图片

 

3、点击就会跳转,弹出下载界面(不同浏览器界面可能不一样)

Android Opencv 之 Android Studio 进行 opencv ( 4.2.0) 环境搭建,并简单进行图片灰度处理demo_第4张图片

 

4、下载好后,进行解压

Android Opencv 之 Android Studio 进行 opencv ( 4.2.0) 环境搭建,并简单进行图片灰度处理demo_第5张图片

 

四、Android Studio (我的版本是3.6.2)新建一个工程

1、打开 Android Studio 新建一个工程

Android Opencv 之 Android Studio 进行 opencv ( 4.2.0) 环境搭建,并简单进行图片灰度处理demo_第6张图片

 

2、可以新建一个Empty Activity

Android Opencv 之 Android Studio 进行 opencv ( 4.2.0) 环境搭建,并简单进行图片灰度处理demo_第7张图片

 

3、去一个工程名

Android Opencv 之 Android Studio 进行 opencv ( 4.2.0) 环境搭建,并简单进行图片灰度处理demo_第8张图片

 

 

五、在Android Studio 工程中引入 Opencv 420

1、在新建的工程中, File - New - Import Module

Android Opencv 之 Android Studio 进行 opencv ( 4.2.0) 环境搭建,并简单进行图片灰度处理demo_第9张图片

 

2、找到下载好的 opencv ,解压下的 sdk 文件夹,引入

Android Opencv 之 Android Studio 进行 opencv ( 4.2.0) 环境搭建,并简单进行图片灰度处理demo_第10张图片

Android Opencv 之 Android Studio 进行 opencv ( 4.2.0) 环境搭建,并简单进行图片灰度处理demo_第11张图片

 

3、短暂时间后,就会编译成功

Android Opencv 之 Android Studio 进行 opencv ( 4.2.0) 环境搭建,并简单进行图片灰度处理demo_第12张图片

 

4、把引入的 Opencv 下的build.gradle 编译版本与 app 的保持一致

Android Opencv 之 Android Studio 进行 opencv ( 4.2.0) 环境搭建,并简单进行图片灰度处理demo_第13张图片

 

六、Android Studio 项目中 测试 opencv 功能,验证 opencv 导入成功与否

1、File  - Project Structure ...

Android Opencv 之 Android Studio 进行 opencv ( 4.2.0) 环境搭建,并简单进行图片灰度处理demo_第14张图片

 

2、在 app 中添加依赖引用 opencv

Android Opencv 之 Android Studio 进行 opencv ( 4.2.0) 环境搭建,并简单进行图片灰度处理demo_第15张图片

 

3、新建一个脚本,继承 OpenCVInterface 接口,添加初始化代码

Android Opencv 之 Android Studio 进行 opencv ( 4.2.0) 环境搭建,并简单进行图片灰度处理demo_第16张图片

Android Opencv 之 Android Studio 进行 opencv ( 4.2.0) 环境搭建,并简单进行图片灰度处理demo_第17张图片

 

4、导入一张测试图片,然后再布局中添加一个 ImageView

Android Opencv 之 Android Studio 进行 opencv ( 4.2.0) 环境搭建,并简单进行图片灰度处理demo_第18张图片

Android Opencv 之 Android Studio 进行 opencv ( 4.2.0) 环境搭建,并简单进行图片灰度处理demo_第19张图片

 

5、编写 MainActivity ,进行初始化,和灰度图片处理

Android Opencv 之 Android Studio 进行 opencv ( 4.2.0) 环境搭建,并简单进行图片灰度处理demo_第20张图片

 

6、打包,运行在真机上,效果如下

Android Opencv 之 Android Studio 进行 opencv ( 4.2.0) 环境搭建,并简单进行图片灰度处理demo_第21张图片

 

七、关键代码

1、MainActivity

package com.example.opencvndkandroid0502;

import androidx.appcompat.app.AppCompatActivity;

import android.graphics.Bitmap;
import android.os.Bundle;
import android.widget.ImageView;

import org.opencv.android.BaseLoaderCallback;
import org.opencv.android.LoaderCallbackInterface;
import org.opencv.android.OpenCVLoader;
import org.opencv.android.Utils;
import org.opencv.core.Mat;
import org.opencv.imgproc.Imgproc;

import java.io.IOException;

public class MainActivity extends AppCompatActivity {

    private ImageView mImageView;

    private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
        @Override
        public void onManagerConnected(int status) {
            super.onManagerConnected(status);
            if (status == LoaderCallbackInterface.SUCCESS) {
                //服务启动成功,灰度化图片显示到ImageView上
                filterImage();
            }
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mImageView = findViewById(R.id.sample_image);
        new OpenCVNativeLoader().init();
    }

    @Override
    protected void onResume() {
        super.onResume();
        if (!OpenCVLoader.initDebug()) {
            //启动OpenCV服务
            OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION, getApplicationContext(), mLoaderCallback);
        } else {
            mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
        }
    }

    //灰度化图片,暂不做代码说明,复制即可
    private void filterImage() {
        Mat imgMat = null;
        try {
            imgMat = Utils.loadResource(this, R.drawable.demo);
            Imgproc.cvtColor(imgMat, imgMat, Imgproc.COLOR_RGB2BGR);
            Mat resultMat = imgMat.clone();
            Imgproc.cvtColor(imgMat,resultMat,Imgproc.COLOR_BGR2GRAY);
            Bitmap bitmap = Bitmap.createBitmap(resultMat.cols(), resultMat.rows(), Bitmap.Config.ARGB_8888);
            Utils.matToBitmap(resultMat, bitmap);
            mImageView.setImageBitmap(bitmap);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

2、OpenCVNativeLoader

package com.example.opencvndkandroid0502;

import org.opencv.osgi.OpenCVInterface;

import java.util.logging.Level;
import java.util.logging.Logger;

public class OpenCVNativeLoader implements OpenCVInterface {

    public void init() {
        System.loadLibrary("opencv_java4");
        Logger.getLogger("org.opencv.osgi").log(Level.INFO, "Successfully loaded OpenCV native library.");
    }
}

 

3、activity_main.xml




    

 

 

 

你可能感兴趣的:(Android,Opencv,Android,Opencv)