这里默认你已经成功安装了Android Studio IDE;我这里使用的AS版本是3.0.1;截止目前,AS稳定版本已经升级至3.2.1,至于版本间的区别,这里不多做区分和说明。如果对于AS的下载和安装有问题也可以参加我的关于AS介绍的博客。下面就来看看如何搭建OpenCV的开发环境。

 

1,环境搭建

第一步:下载SDK

下载地址

点击下图中的红色方框中SDK,也即最新发布的openCV3.4.4

 

第二步:解压与分析

下载完成解压之后的目录如下:

其中:

  • apk文件夹中存储的是对应不同cpu的代理(manager)应用
  • samples中存储的是官方给出Demo源码示例,但是遗憾的是这里都是Eclipse项目
  • sdk中存储的就是我们接下来搭建环境需要使用的一些材料

下面就来简单看一下sdk中究竟有什么东西:

  • etc中存放的是训练好的级联分类器数据(HAAR和LBP)
  • java中存放的是我们接下来使用的Android SDK
  • native中存放基于c/c++编译好的本地库文件,JNI层开发需要的头文件和CMake文件

第三步:导入SDK

(1)创建一个新的工程,点击“File”-->"New"-->"Import Module",然后选择上图中的java文件夹点击OK“”即可;待工程构建完成之后,项目结构如下图所示:

 

(2)把native文件夹中libs目录下面的所以文件copy到我们项目的libs目录中

(3)到目前为止,我们的工作也快结束了,但是还需要修改一下gradle文件

  • 在上图中的build.gradle(Module:app)中最外层添加如下代码:
task nativeLibsToJar(type: Jar, description: 'create a jar archive of the native libs') {    destinationDir file("$buildDir/native-libs")    baseName 'native-libs'    from fileTree(dir: 'libs', include: '**/*.so')    into 'lib/'}tasks.withType(JavaCompile) {    compileTask -> compileTask.dependsOn(nativeLibsToJar)}
  • 在我们导入上面Module的时候,上一步的gradle文件还会添加如下依赖(自动添加):
 implementation project(':openCVLibrary344')
  • 此外,我们还需要在依赖中加载libs目录的文件
 implementation fileTree(include: ['*.jar'], dir: 'libs') implementation fileTree(dir: "$buildDir/native-libs", include: 'native-libs.jar') implementation fileTree(dir: 'libs', include: ['*.jar'])

这样,整个环境就算搭建完成了,到后面NDK相关开发的时候,还会去介绍相关的环境搭建,这里就先不多说了,还是来看看一下环境是否搭建成功了吧。

 

2,校验

还是使用一个别人举的例子也是一个很简单的API调用--图片的灰度化;先看一下效果示意图:

 

布局activity_test.xml代码:

<?xml version="1.0" encoding="utf-8"?>                

TestActivity.java代码:

package com.hfut.operationopencvmain;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.ImageView;import org.opencv.android.OpenCVLoader;import org.opencv.android.Utils;import org.opencv.core.Mat;import org.opencv.imgproc.Imgproc;/** * @author why * @date 2018-11-26 23:00:06 */public class TestActivity extends AppCompatActivity {    private ImageView imageView;    private static final String TAG = "TestActivity";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_test);        boolean status = OpenCVLoader.initDebug();        if (status) {            Log.e(TAG, "onCreate: Succese");        } else {            Log.e(TAG, "onCreate: Failed");        }        imageView = findViewById(R.id.test_image);        imageView.setImageDrawable(getResources().getDrawable(R.drawable.test));    }    public void grayImage(View view) {        Mat src = new Mat();        Mat dst = new Mat();        Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.test);        Utils.bitmapToMat(bitmap, src);        Imgproc.cvtColor(src, dst, Imgproc.COLOR_BGR2GRAY);        Utils.matToBitmap(dst, bitmap);        imageView.setImageBitmap(bitmap);        //如果不用,直接释放资源        //src.release();        //dst.release();    }}

好了,到这里就基本介绍完了,整个的环境搭建还是很简单的;但是如果你尝试着把下载下来的samples里面的Eclipse项目移植到AS中并且能成功的在设备上运行起来还是要费一点功夫的,这个在后面会介绍其中的一些坑。

下一篇:关于OpenCV的主要信息基本介绍

注:欢迎扫码关注

更多相关文章

  1. Android上利用SDK的BluetoothAPI实现传送文件
  2. android带返回按钮的自定义标题栏布局文件详解
  3. Android(安卓)7.1添加一个 系统底层服务
  4. [置顶] Android下通过pocketsphinx实现离线语音识别的环境搭建和
  5. Android中新建的文件在R没有显示对应的文件解决办法总结
  6. Android学习14--Android应用资源
  7. H264解码器源码(Android(安卓)1.6 版和QT都可以调用)
  8. 在电脑端加密的文件,放在android上进行解密,但是出现pad block cor
  9. 【Android初学者】Eclipse 资源管理器,文件夹功能区讲解

随机推荐

  1. Android实现对imageview的拖动以及缩放
  2. Android通过手势实现的缩放处理
  3. Android(安卓)Robotium的自动化代码
  4. android 刷新View
  5. Android(安卓)蓝牙配对、连接和通信
  6. android 图形开发实例
  7. Android(安卓)使用广播(BroadcastReceiver
  8. Android(安卓)App Development with Cloj
  9. android gmail 添加附件(转载)
  10. Android(安卓)四大组件 之 bindService流