在Android中加载并使用opencv的方法

项目需要再android app中处理JPEG image的DCT系数,并写出来。以前用Matlab+libjpeg,想起来就很麻烦。

因此,这次还是试试opencv。一上午的时间,用来了下载opencv,再把它加载到一个test项目中去,并实现了一个小例子。主要参考的是以下几篇博文:(博客是个好东西啊)


安装-1:http://blog.csdn.net/tx360v5/article/details/23793019

安装-2(1的后续部分):http://stackoverflow.com/questions/17767557/how-to-use-opencv-in-android-studio-using-gradle-build-tool


使用示例:http://blog.csdn.net/gao_chun/article/details/49359535


手机端,不用安装opencv manager也能运行opencv的教程:http://www.cnblogs.com/tail/p/4618790.html


下面只详细写出安装-1 和 手机端,不用安装opencv manager的细节

安装-1:

1.下载 OpenCV Android SDK (我下的是2.4.8版本的,在后面一些设置中不同版本会有些不同),并将下载的OpenCV-2.4.8-android-sdk中的sdk文件夹中的Java文件夹 重命名为 opencv

2.在android studio的工作区的根目录下(我这里的工作区叫MyApplication)创建一个libraries 文件夹,将刚才的opencv文件夹整个复制到新建的libraries里面。

3.在android studio中,在opencv的根目录处新建一个 build.gradle文件

在Android中加载并使用opencv的方法_第1张图片


4.在build.gradle 文件中添加如下代码

apply plugin: 'com.android.library'

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.0.0'
    }
}

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"

    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            res.srcDirs = ['res']
            aidl.srcDirs = ['src']
        }
    }
}


5.在工作区根目录的 settings.gradle 中添加以下代码,改动之后会提示你需要sync,点sync now

[html]  view plain  copy
 
  1. include ':libraries:opencv'  
6.在你需要用到opencv的model的/src/main文件夹下新建一个jniLibs文件夹。将 刚才下载的OpenCV-2.4.8-android-sdk/sdk/native/libs中的文件拷贝进来。

7.在刚才那个model根目录的build.gradle 中的dependency下添加以下代码

[html]  view plain  copy
 
  1. compile project(':libraries:opencv')  


在Android中加载并使用opencv的方法_第2张图片


到这里为止就设定好了


手机端,不用安装opencv manager的细节:

    @Override
    protected void onResume() {
        super.onResume();
        //load OpenCV engine and init OpenCV library
//        OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_9, getApplicationContext(), mLoaderCallback);
//        Log.i(TAG, "onResume sucess load OpenCV...");
        if (!OpenCVLoader.initDebug()) {
            Log.d(TAG, "Internal OpenCV library not found. Using OpenCV Manager for initialization");
            OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_0_0, this, mLoaderCallback);
        } else {
            Log.d(TAG, "OpenCV library found inside package. Using it!");
            mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
        }
    }


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