OpenCV 4.3.0 安卓配置(超简单)

去年研究过一段时间在安卓平台使用OpenCV,结果后来搞其他的去了。现在做的这个项目发现还是得用到,so重新搞起来。之前可能用的3.x的版本所以跟着别人教程也没遇到什么问题,但是由于本人喜新厌旧,所以决定直接装最新版的OpenCV 4.3.0,看了网上各大神的配置教程一直都未成功。自己研究了一晚上发现其实很简单。

1、先去官网下载

OpenCV 4.3.0 安卓配置(超简单)_第1张图片

2、新建一个AS项目

3、导入OpenCV模块

OpenCV 4.3.0 安卓配置(超简单)_第2张图片
敲黑板了,这里是关键。
OpenCV4Android的SDK文件估计有过变动吧,之前的方法都是导入SDK下的Java文件夹,然后再修改build.gradle配置。我试过几个都不行。
在这里插入图片描述
去看了下samples,发现官方示例其实是有整个SDK文件夹的。
OpenCV 4.3.0 安卓配置(超简单)_第3张图片
所以这里我直接整个导入。
OpenCV 4.3.0 安卓配置(超简单)_第4张图片

4、修改build.gradle

只需要修改opencv的build.gradle,把sdk版本改为和app的一致。
OpenCV 4.3.0 安卓配置(超简单)_第5张图片
OpenCV 4.3.0 安卓配置(超简单)_第6张图片

OpenCV 4.3.0 安卓配置(超简单)_第7张图片

5、项目依赖添加

此时app的build.gradle还未添加OpenCV依赖,如下操作即可。
OpenCV 4.3.0 安卓配置(超简单)_第8张图片
OpenCV 4.3.0 安卓配置(超简单)_第9张图片

OpenCV 4.3.0 安卓配置(超简单)_第10张图片

6、跑个小程序测试一下

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/process_btn"
        android:text="灰度"/>

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="fitCenter"
        android:id="@+id/sample_img"
        android:src="@drawable/cheer"
        android:layout_centerInParent="true"/>

</RelativeLayout>
import androidx.appcompat.app.AppCompatActivity;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;

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

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        iniLoadOpenCV();

        Button processBtn = this.findViewById(R.id.process_btn);
        processBtn.setOnClickListener(this);

    }

    //首先加载OpenCV本地库
    private void iniLoadOpenCV() {
        boolean success = OpenCVLoader.initDebug();
        if(success) {
            Toast.makeText(this.getApplicationContext(), "Loading OpenCV Libraries...", Toast.LENGTH_LONG).show();
        } else {
            Toast.makeText(this.getApplicationContext(), "WARNING: Could not load OpenCV Libraries!", Toast.LENGTH_LONG).show();
        }
    }



    @Override
    public void onClick(View v) {
        Bitmap bp = BitmapFactory.decodeResource(this.getResources(), R.drawable.cheer);
        Mat src = new Mat();
        Mat dst = new Mat();
        Utils.bitmapToMat(bp, src);
        Imgproc.cvtColor(src, dst, Imgproc.COLOR_BGRA2GRAY);
        Utils.matToBitmap(dst, bp);
        ImageView iv = this.findViewById(R.id.sample_img);
        iv.setImageBitmap(bp);
        src.release();
        dst.release();
    }
}

看见这行字表示OpenCV初始化成功了,之前一直不行。
OpenCV 4.3.0 安卓配置(超简单)_第11张图片
大功告成!
OpenCV 4.3.0 安卓配置(超简单)_第12张图片

你可能感兴趣的:(android,studio,android,安卓,opencv)