OpenCV4Android(AS)-1

1.需要提前掌握的知识

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);
   }
}

原图:
这里写图片描述

结果:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值