您的位置:首页 > 移动开发 > Android开发

OpenCV4Android(AS)-1

2016-04-25 17:40 585 查看
需要提前掌握的知识

关于OpenCV-Android-SDK

OpenCV4Android的使用
新建一个OpenCVTest项目

添加java层的接口

将OpenCV动态链接库添加进项目

验证

1.需要提前掌握的知识

Java编程语言

JNI技术

Activity组件

Camera的具体知识

OpenCV SDK

2.关于OpenCV-Android-SDK

其中包括了:

APK 有基于各种硬件平台的OpenCV Manager

Samples 各种例子

SDK 需要的各种库

3.OpenCV4Android的使用

Android应用要使用OpenCV 可以通过在自己的应用里调用OpenCV Manager,但这样就要求要安装OpenCV Manager 。另外的方法是直接调用opencv 的动态链接库,在SDK–>native–>libs目录下可以找到各个平台对应的.so文件。SDK–>java提供了相应的接口,我们可以作为Module方便的进行调用。

具体步骤参考:stackoverflow

大致示例步骤:

1. 新建一个OpenCVTest项目

在其目录下新建libraries文件。如图:



2. 添加java层的接口

1.复制SDK目录下的java文件夹到OpenCVTest的目录下,并重名命名为opensv。如图:



2.在opencv目录下新建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 8
targetSdkVersion 23
versionCode 2480
versionName "2.4.8"
}

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


3.在将opencv添加为module,如图:(图中我将app重命名为了OpenCVExample)



3.将OpenCV动态链接库添加进项目

在OpenCVExample–>src–>main目录下新建jniLibs文件。如图:



将SDK–>native–>libs目录下对应的平台的.so文件复制到jniLibs中,如图:



4. 验证

随便找一张图片对其进行灰度化:

public class MainActivity extends AppCompatActivity {

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

boolean result = OpenCVLoader.initDebug();

Log.d("opencv是否启动",result+"");

Mat rgbMat = new Mat();
Mat grayMat = new Mat();
Bitmap srcBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic);
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

ImageView img = (ImageView) findViewById(R.id.image_view);
if (img == null){
return;
}
img.setImageBitmap(grayBitmap);
}
}


原图:



结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android opencv