Android OpenCV

Android平台下的图片处理---OpenCV的使用(1)

2019-01-19  本文已影响83人  善笃有余劫

OpenCV是什么

百度百科:

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

正如提到音视频处理不得不提ffempg 说到图像绘制不等不提openGL一样。在图像处理方面,就不得不提OpenCV了。

选择OpenCV的几个可能的理由:

1.开源 2.跨平台 3.使用范围广 4.轻量高效 5.使用方便

导入工程

导入OpenCV工程 选择Android_SDK 工程

下载页面: OpenCV 版本下载页面

image.png

下载解压就行

image.png

AndroidStudio 打开工程

下载NDK和Cmake资源文件 链接好 轻松跑起来

跑起来跑起来

导入的工程文件列表:

image.png

点击任意一个工程:

如你所愿,跑起来了 但是没成功

image.png
"It seems that you device does not support camera (or it is locked). Application will be closed."

原因很简单,手机版本太高了 相机需要动态申请权限

动态权限申请

申请库

 implementation 'com.github.tbruyelle:rxpermissions:0.10.2'

Activity 继承 修改 FdActivity extends FragmentActivity

private RxPermissions rxPermissions;
private String[] permissionList = new String[]{Manifest.permission.CAMERA};
rxPermissions = new RxPermissions(this);
        rxPermissions.request(permissionList).subscribe(new Consumer<Boolean>() {
            @Override
            public void accept(Boolean aBoolean) throws Exception {

            }
        });

完工 重启工程 一个人脸识别的DEMO

image.png

区分使用混合c++源码 和 直接使用so库

使用opencv_java.so文件

我没来看下这个opencv库

image.png

分为so库文件和java文件

so是已经封装好的c++方法 对应 java的调用

java代码则是c层代码的调用和封装 便于使用

核心java文件在core包下:

image.png

其他的文件像android包下面的:

基本的加载类 opencv加载类 相机类 等

image.png

具体使用还是看文档吧:

最新的还是在 官网 虽然是英文的 翻译翻译还是能看的

opencv_4.0 文档

除了这种使用方式还有一种直接下载C++源码 通过混合编译的方式调用

这种方式可以获得更加自由的使用,也可以将核心方法放在c++层。
相对于java,使用c层视乎能获得更大的性能提升。如果你对速度要求很高的话,建议自己写c层代码 通过混合编译 调用(NDK)

而且能获得最大的功能支持,当然你需要学习更多关于混合编译的知识。包括 NDK开发 c++代码编写

不过这些代价是值得的。

我这次重点还是OpenCV的使用 所以会直接使用这个opencv 模块作为整个opencv的依赖。至于NDK什么的,有空再有需求的时候再回来说。

写一个测试的DEMO

且看下一篇文章:

文档资料推荐

SDK包的sdk文件夹下面自带了文档:

百度云分享---OpenCV
opencv-4.0.1-android-sdk\OpenCV-android-sdk\sdk\java\javadoc路径下面

image.png

点开:index.html即可

image.png

最新的文档英文资料:官网Opencv 4.0 文档

翻译的中文资料(17年的翻译版本):https://www.w3cschool.cn/opencv/

这个都是2017年了,居然还是用eclipse演示Android项目开发

我的建议是 先看 中文文档 再看 opencv 官网的 更新了什么新的东西

上一篇下一篇

猜你喜欢

热点阅读