android-opencv机器视觉库的集成部署

这段时间一直在学习opencv在android平台上的应用,因此打算把学习的过程记录下来,就当是学习笔记吧.

opencv在android平台上的部署有两种方式:

  1. 手机安装OpencvManager.apk,然后项目导入OpenCVSDK的Java库,使用 OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_13, context, mLoaderCallback);以AIDL多进程通信的方式,使用OpencvManager的服务进行OpenCV的运算.
  2. 将OpenCV的native部分集成在App自己本身,但这会让apk安装包大一些.

其实这两种方法都差不多,首先去官网把OpenCV-android-sdk.zip下载下来,然后在android studio里面File|import module 选择sdk目录下的./java文件夹就好了.

但这样配置好之后还不能直接使用,因为opencv在使用之前还需要检查一下是否安装了OpenCV管理器,如果没有安装则会弹出提示框告诉你要去下载安装才能进行后续的操作

@Override
public void onResume() {
    super.onResume();
    //使用前必须要loader成功才可以.
    if (!OpenCVLoader.initDebug()) {
        OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_13, this, mLoaderCallback);
    } else {
        mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
    }
}
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
       @Override
       public void onManagerConnected(int status) {
           switch (status) {
               case LoaderCallbackInterface.SUCCESS: {
                   Log.i(TAG, "OpenCV loaded successfully");

                   //loader成功,在这里完成你的工作.↓

                   //<editor-fold desc="高斯模糊">
                   ImageView image_src = (ImageView) findViewById(R.id.image_src);
                   ImageView image_result = (ImageView) findViewById(R.id.image_result);

                   Bitmap src = BitmapFactory.decodeResource(getResources(), R.drawable.image);
                   Mat mat = new Mat(src.getWidth(), src.getHeight(), CvType.CV_8UC4);
                   Utils.bitmapToMat(src, mat);
                   Imgproc.blur(mat, mat, new Size(30, 30));
                   Bitmap bitmap = Bitmap.createBitmap(mat.cols(), mat.rows(), Bitmap.Config.ARGB_8888);
                   Utils.matToBitmap(mat, bitmap);
                   image_src.setImageBitmap(src);
                   image_result.setImageBitmap(bitmap);
                   //</editor-fold>
               }
               break;
               default: {
                   super.onManagerConnected(status);
               }
               break;
           }
       }
   };

程序运行之后成功显示出模糊效果既成功.

另外如果不想安装OpenCVManager.apk,则需要我们把opencv的库全部集成到我们自己的项目中去,其实也非常简单,只需要把opencv_sdk中的OpenCV-android-sdk\sdk\native\libs放到我们自己项目的jnilibs文件夹就可以了.

最后集成完试试效果,图片高斯模糊:

opencv高斯模糊

本地集成的DEMO:https://github.com/miqt/OpenCVforAndroid

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

痕迹丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值