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

<?xml version="1.0" encoding="utf-8"?>    

 

 

 

更多相关文章

  1. Android 开发环境配置 之后(释放你的C盘)
  2. Android ListView滑动过程中图片显示重复错乱闪烁问题解决
  3. 问题小结(11)-dialog的半透明背景的灰度
  4. Android TextView使用HTML处理字体样式、显示图片等
  5. 第一行代码(第二版)自学笔记之第一篇:Android Studio开发环境的搭建
  6. Android安装环境搭建
  7. Android处理大图片

随机推荐

  1. android之Dialog相关
  2. Android(安卓)详解build.gradle文件
  3. 【Android每日点滴】Fragment与Activity
  4. Android实用闹钟开发(三)---AlarmManager
  5. 【Android(安卓)UI设计】之自定义计时器
  6. 认识 Android(安卓)Service
  7. android ViewTreeObserver详细讲解
  8. 带倒计时提示的弹框
  9. android studio使用svn时忽略文件列表
  10. Android(安卓)重新编译资源文件