参照网上面的很多关于Android 使用OpenCV的,虽然有一些讲的也比较详细,但是按照套路来,似乎不成功!


搭建环境: Android Studio 2.0 + OpenCV-Android-master.zip(这个是3.0版本的,官网上面可以下载,要下载for Android的版本)+NDK(android-ndk-r10,至少大于等于r9)

使用OpenCV SDK里面的sample都需要opencvManager.apk这个管理apk支持,所以在运行那些sample的时候,首先需要安装这个管理器APK.

下面给出不需要安装管理器APK的方式,如果使用OpenCV 库.

步骤如下:

使用JAVA版本:

<1> : 新建一个android 工程,新建了以后将OpenCV SDK:

E:\liuzhibao\libaray\OpenCV-android-sdk\sdk\java\src
这个路径下的所有源代码拷贝到你的工程src根目录下,然后在删除org.opencv.engine这个包和里面的类文件,这个是不需要的.

Android OPenCV 环境配置_第1张图片

注意:

拷贝了上面的opencv SDK java目录下库,但是如果大致看过库的结构和内容,发现这个库里面即org.opencv.android包下面居然有两个View类:

CameraBridgeViewBase
CameraGLSurfaceView

这两个要提供R.java的文件路径,里面的默认路径是import org.opencv.R,要将这个改到新建工程R的路径:

比如:

import org.durian.durianjaveopencv.R;
Android OPenCV 环境配置_第2张图片

另外一个类推,也需要调整,这样这个类库的java就没有错误了!


不过还是发现View里面又少了几个attrs属性值,靠! 继续在工程values目录下新建一个attrs.xml的文件:

<?xml version="1.0" encoding="utf-8"?>                                                           
上面的内容其实也是opencv SDK里面的,库带View类就有这么坑爹!

E:\liuzhibao\libaray\OpenCV-android-sdk\sdk\java\res\values

Android OPenCV 环境配置_第3张图片


<2> : 在工程里面新建一个aidl文件夹,然后再aidl文件夹中新建一个包:

org.opencv.engine
因为是aidl接口的,所以报名是一定不能够随便改的,所以这个是固定的,也可以去参考org.opencv.engine下面的接口类.然后在aidl接口中新建一个

OpenCVEngineInterface.aidl接口.

Android OPenCV 环境配置_第4张图片

<3> : 由于是使用java层的opencv,那么就还需要导入opencv sdk 中的so库 在工程src/main下面新建一个jniLibs的目录,这个目录可以随便改,然后将opencv SDK目录下

E:\liuzhibao\libaray\OpenCV-android-sdk\sdk\native\libs

对应所需要的文件夹(当然包含文件夹里面的内容)拷贝到jniLibs目录下.

Android OPenCV 环境配置_第5张图片

<4> : 修改grade配置文档:

apply plugin: 'com.android.application'android {    compileSdkVersion 23    buildToolsVersion "23.0.1"    defaultConfig {        applicationId "org.durian.durianjaveopencv"        minSdkVersion 21        targetSdkVersion 23        versionCode 1        versionName "1.0"    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }    }    sourceSets.main.jni.srcDirs = []    //禁止自带的ndk功能    sourceSets.main.jniLibs.srcDirs = ['src/main/libs','src/main/jniLibs']    //重定向so目录为src/main/jniLibs,原来为src/main/libs}dependencies {    compile fileTree(dir: 'libs', include: ['*.jar'])    testCompile 'junit:junit:4.12'    compile 'com.android.support:appcompat-v7:23.2.1'}
添加上面下面带中文的两句就可以了,其中jniLibs是前面新建的,如果使用者不是这个名字,可以自行调整.

<5> : 上面基本配置好了就可以开始开发主工程了:

package org.durian.durianjaveopencv;import android.app.Activity;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 org.opencv.android.OpenCVLoader;import org.opencv.android.Utils;import org.opencv.core.Mat;import org.opencv.imgproc.Imgproc;public class DurianMainActivity extends Activity implements View.OnClickListener{    private Button mButton;    private ImageView mImage;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_durian_main);        mButton=(Button)findViewById(R.id.javabutton);        mButton.setOnClickListener(this);        mImage=(ImageView)findViewById(R.id.image);    }    @Override    public void onClick(View v) {        int id=v.getId();        switch (id){            case R.id.javabutton:                OpenCVLoader.initDebug();                Mat rgbMat = new Mat();                Mat grayMat = new Mat();                Bitmap srcBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.linr);                Bitmap grayBitmap = Bitmap.createBitmap(srcBitmap.getWidth(), srcBitmap.getHeight(), Bitmap.Config.RGB_565);                Utils.bitmapToMat(srcBitmap, rgbMat);//convert original bitmap to Mat, R G B.                Imgproc.cvtColor(rgbMat, grayMat, Imgproc.COLOR_RGB2GRAY);//rgbMat to gray grayMat                Utils.matToBitmap(grayMat, grayBitmap); //convert mat to bitmap                mImage.setImageBitmap(grayBitmap);                break;        }    }}

当然在drawable目录下放一张linr.png的图片.


反复检查了一下上面的步骤,发现不少什么了,运行程序,点击按钮,图片置灰了.


下面搞一下如何使用native(jni)来达到使用opencv库.




















更多相关文章

  1. Eclipse下Android工程无法自动产生R文件解决
  2. android 5.0新特性学习--Drawable Tinting(为图片资源着色)
  3. android中Matrix之一(图片二维转动)
  4. cocos2d-x eclipse 环境搭配。我能找到网上最完整的。
  5. ArcGIS 4 Android开发环境搭建
  6. Android环境离线安装--极速版
  7. android studio工程中引入aar包
  8. android(drawable文件夹)图片适配

随机推荐

  1. go语言如何判断变量是slice还是array
  2. ubuntu怎么安装配置go语言环境
  3. 两个Golang超大文件读取的方案
  4. go语言如何删除链表节点
  5. 详解Golang编译成DLL文件
  6. go语言如何升级版本
  7. go语言如何删除切片
  8. go语言环境如何配置
  9. 学go语言能干什么
  10. go语言开发工具有哪些