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,进入 官网

 

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

 

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

 

4、下载好后,进行解压

 

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

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

 

2、可以新建一个Empty Activity

 

3、去一个工程名

 

 

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

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

 

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

 

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

 

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

 

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

1、File  - Project Structure ...

 

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

 

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

 

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

 

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

 

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

 

七、关键代码

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"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <ImageView
        android:id="@+id/sample_image"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:srcCompat="@drawable/demo" />
</RelativeLayout>

 

 

 

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

仙魁XAN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值