资讯专栏INFORMATION COLUMN

Android For OpenCV的环境搭建

gnehc / 1332人阅读

摘要:是一个基于许可开源发行的跨平台计算机视觉库,可以运行在和操作系统上。后期将进一步完善其学习记录。为了确保工程创建成功,我们可以重新一下工程载入我们在的回调函数中异步初始化,代码很简单,一句话加上一个回调。

OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类,同时提供了Python、Ruby、MATLAB等语言的接口,实现了和计算机视觉方面的很多通用算法百度百科 词条:opencv

  • 目前公司项目的新功能用到图片识别功能,在了解到过程中知道了OpenCV这个神器,因此学习了基础,特地来记录,防止以后忘记。后期将进一步完善其学习记录。更多内容欢迎访问我的个人网站

我用到东西如下:

  • Android Studio 2.3
  • OpenCV for Android 点我下载
下载OpenCV4Android
  • 将压缩包解压后可以看到有以下文件,其中使用红线包裹的文件夹是非常重要的文件夹,后面要用到
  • apk 保存的是一些基础包,要根据你的手机芯片的架构安装合适的版本,否则将会提醒你安装,以至于各种错误,所以在之前,还是老老实实安装吧。
  • samples 保存的一些demo,可以根据自己的需要进行学习
  • sdk 我们开发所用的一些工具

    注意:我在学习的过程,直接在手机安装会报解析安装包错误,以至于无法安装,那么这里需要连接开发者模式,使用adb进行安装,命令: adb install ****.apk 就可以安装成功了。

创建工程
  • 创建一个普通的安卓工程即可,然后我们需要导入Module
  • 导入Module 这个东西就是上图中的java文件夹,选择File--> new --> import Module 选择步骤一图中红色框框圈起来的JAVA文件夹即可,然后在文件栏中就可以看到这个新的Module了,后面的320指的是版本号,每个人可能不一样

  • 导入Module之后我们需要配置一下,在File--->Project Structure菜单中选择该Moudle作为库依赖即可,如下操作

注意:在某些情况下,再倒入Module的情况下,会出现报错的情况,这是修改Module的编译版本和目标版本和APP的保持一致,然后重新Sync即可.

导入库文件
  • 这里需要导入so库等文件,文件就在步骤一图的用红线圈中的libs文件夹里面,选中里面的所有文件,注意是选中lib里面所有的文件,不是选中libs文件夹。
  • 在项目中,选app工程,在src/main目录下新建jniLibs文件夹,将上面选中的文件全部复制到其中。

  • 为了确保工程创建成功,我们可以重新reBuild一下工程

载入Opencv
  • 我们在Activity的回调函数中异步初始化OpenCV,代码很简单,一句话加上一个回调。
    @Override
    protected void onResume() {
        super.onResume();
        //载入OpenCv初始化引擎,并载入库,可以看到initAsync,使用的是异步加载
        //因此需要提供回调函数
       //OpenCVLoader.OPENCV_VERSION_3_2_0指的是版本号,请根据你自己的版本选择
        OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_2_0, getApplicationContext(), mLoaderCallback);
    }
    //OpenCV库加载并初始化成功后的回调函数
    private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
        @Override
        public void onManagerConnected(int status) {
            // TODO Auto-generated method stub
            switch (status) {
                case BaseLoaderCallback.SUCCESS:
                    Log.e("OpenCv", "成功加载");
                    break;
                default:
                    super.onManagerConnected(status);
                    Log.e("OpenCv", "加载失败");
                    break;
            }
        }
    };
使用OpenCV
  • 我们来使用OpenCv做一个简单灰度图
  • 首先是布局文件,就一个简单的图片


    
  
  • 具体代码如下
        Mat rgbMat = new Mat();
        Mat grayMat = new Mat();
        //从资源中获取图片
        srcBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.psb);
        //构建灰度RGB图片
        grayBitmap = Bitmap.createBitmap(srcBitmap.getWidth(), srcBitmap.getHeight(), Bitmap.Config.RGB_565);
        //将资源图片转化为Mat类资源
        Utils.bitmapToMat(srcBitmap, rgbMat);//convert original bitmap to Mat, R G B.
        //将图片灰度化
        Imgproc.cvtColor(rgbMat, grayMat, Imgproc.COLOR_RGB2GRAY);
        //将灰度Mat转换为灰度BitMap资源
        Utils.matToBitmap(grayMat, grayBitmap); 
        //设置显示
        ((ImageView)findviewById(R.id.img)).setImageBitmap(binaryBitmap);
  • 效果图

当然还有更多的使用方法没有再此详细阐述,可以再网上寻找一些资源,Mat是非常强大的一个类,好好玩吧。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/2491.html

相关文章

  • Android NDK和OpenCV整合开发 (1) 环境搭建

    摘要:和整合开发环境搭建第一部分搭建环境注以下所有下载的都保存在虚拟机的目录下,也可以到百度网盘下载,地址是,不同版本的配置方式可能有些变化,如果不是很清楚版本问题的话,推荐使用虚拟机中使用的版本配置环境下载,虚拟机中下载的版本是下载之后解压即可 Android NDK和OpenCV整合开发 (1) 环境搭建 ##### 第一部分 搭建环境 [注:以下所有下载的sdk都保存在虚拟机的/h...

    xcold 评论0 收藏0
  • Android NDK和OpenCV整合开发 (3) OpenCV

    摘要:本文主要是介绍了和开发环境的搭建,以及基于示例程序的演示。使用的方式是将作为库,然后调用。比较时使用的都是基本图像处理操作,例如灰度化,高斯模糊,边缘检测等等。 Android NDK 和 OpenCV 整合开发总结(3) 这一节的主要内容是OpenCV在Android NDK开发中的应用,包括下面几个方面的内容: 如何实现Static Initialization从而不需要安装...

    ZHAO_ 评论0 收藏0
  • OpenCV for Andorid 总结

    摘要:静态还是共享链接上边我们在中,使得,以静态库的方式导入,所以生成的库比较大,达到好几。猜测原因可能是我们在中要编译的是动态库,所以在既有静态库,也有动态库的情况下,需要引入和要编译的库相同类型的。 Android 中写的 JNI 如何调用 OpenCV ? OpenCV 如何配置到 Linux 服务器上? OpenCV for Android 如果想实现图片的高斯模糊,图片比较,人...

    Kerr1Gan 评论0 收藏0
  • OpenCV for Andorid 总结

    摘要:静态还是共享链接上边我们在中,使得,以静态库的方式导入,所以生成的库比较大,达到好几。猜测原因可能是我们在中要编译的是动态库,所以在既有静态库,也有动态库的情况下,需要引入和要编译的库相同类型的。 Android 中写的 JNI 如何调用 OpenCV ? OpenCV 如何配置到 Linux 服务器上? OpenCV for Android 如果想实现图片的高斯模糊,图片比较,人...

    SmallBoyO 评论0 收藏0
  • Android NDK和OpenCV整合开发 (2) Android NDK

    摘要:详细的内容可以查看文件,这个文件可能并没有列出在中我们可以从下面的表格中看出它们对语言特性的支持程度从中我们可以看出很不错,所以一般会配置为。将传递到层解析出现了乱码使用自定义的将转换成的函数,内容如下 Android NDK 和 OpenCV 整合开发 (2) Android NDK 这节主要介绍的内容是Android NDK开发的核心内容和开发总结(包括很多常见问题的解决方案),...

    yangrd 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<