OpenCV 在AndroidStudio 的环境搭建

1 篇文章 0 订阅
1 篇文章 0 订阅

OpenCV AndroidStudio 环境搭建

1、SDK下载: 

https://jaist.dl.sourceforge.net/project/opencvlibrary/opencv-android/3.2.0/opencv-3.2.0-android-sdk.zip

2、新建AndroidStudio工程

        新建android 工程将opencv-3.2.0-android-sdk\OpenCV-android-sdk\sdk\native\libs 对应目录下面的每一个平台对应      的 libopencv_java3.so 拷贝到 app\libs对应平台的目录下。

       libs

3、构建 opencv 在androidStudio 下的module文件

     因为我们下载下来的sdk是eclipse工程格式,我们需要手动的改为android Studio 的插件形式。

  1. 新建openCVLibrary320 文件夹,然后再内部创建如下 \openCVLibrary320\src\main\java 把org copy放在这里。
  2. 创建\openCVLibrary320\src\main\ 下面copy res 文件。
  3. AndroidManifest.xml 放在main 文件夹下。  并删掉“<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="21" />”
  4. 还差一个build.gradle  ,在工程中随便建立一个model.

           module

       5. 把它的 build.gradle 和 proguard-rules.pro copy 到 src 下,下载的 lint.xml 也copy 到src。

       6. 然后把这个文件夹放在 工程的根目录下为位一个插件。

4、在工程中添加这个模块

  1.  在工程的setting.gradle 下增加 include ':openCVLibrary320'
  2. 在app 目录下 build.gradle  dependencies 里增加          
 implementation project(path: ':openCVLibrary320') 

     3、android 里增加

sourceSets {
        main {
            jniLibs.srcDir 'libs'
            jni.srcDirs = []    //disable automatic ndk-build
        }
}

    4、重新build 一下工程。出了这个错误。

        

       不认识这个aidl。下面这么搞:在main 下建aidl 文件夹

         

         

        把这个AIDL文件删掉。把org\opencv\engine 直接拖进来。

           

           在build 下。

        就OK 了。没错误。可以试着使用一下。

5 、demo  代码


package com.zx.opencv;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ImageView;

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 {

    private ImageView imageView;
    private Bitmap orgBitmap;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        iniLoadOpenCV();

        imageView = findViewById(R.id.imageView);

        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inJustDecodeBounds = true;
        BitmapFactory.decodeResource(getResources(),R.drawable.aa);
        int w = options.outWidth;
        int h = options.outHeight;
        int inSample = 1;
        if (w > 1000 || h > 1000) {
            while (Math.max(w / inSample, h / inSample) > 1000) {
                inSample *= 2;
            }
        }
        options.inJustDecodeBounds = false;
        options.inSampleSize = inSample;
        options.inPreferredConfig = Bitmap.Config.ARGB_8888;
        orgBitmap = BitmapFactory.decodeResource(getResources(),R.drawable.aa,options);
        Mat src = new Mat();
        Utils.bitmapToMat(orgBitmap, src);
        Mat gray = new Mat();
        Imgproc.cvtColor(src, gray, Imgproc.COLOR_BGRA2GRAY);

        Utils.matToBitmap(gray, orgBitmap);
        imageView.setImageBitmap(orgBitmap);
        gray.release();
        src.release();

    }

    private void iniLoadOpenCV() {
        boolean success = OpenCVLoader.initDebug();
        //首先使用OpenCVLoader.initDebug()检查一下OpenCV库是否成功加载
        if (success) {
            Log.i("TAG"," openCV load 成功 ");
        } else {
            Log.i("TAG", "openCV load 失败 ");
        }
    }
}

6、使用openCV 灰化后的效果图

demo

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值