Android开发中通过纯Java代码使用OpenCV (mac+AndroidStudio+opencv320)

在网上关于android中如何使用opencv的教程还挺多的, 主要是有两种
1.用JNI配合NDK,核心代码用C++来完成,然后在Java中调用native的方法;
2.用纯Java代码开发OpenCV,使用OCV提供的SDK

第一种方法的优点是运行速度可能会更快,而且程序运行的时候可以直接一个安装包跑起来,但是缺点在于环境配置比较麻烦,而且因为把JNI的so文件都放到了应用程序里,所以整体的包体非常大
第二种方法可以直接写java代码,开发速度快,而且包体非常小,但是运行需要依赖用户安装OpenCV Manager,可能速度会稍慢于第一种

我尝试了第一种方法两天都没搞定, 所以采取了第二种方法;
首先是去opencv的官网下载android-sdk

刚开始我用的是opencv341, 这个版本的opencv的sdk好像有点问题, 建议换成320;

后面步骤网上教程很多,我大概记一下

新建好项目之后(这里不需要勾选那个c++支持,因为我们用的的纯java的方式,所以也不需要下载ndk)

然后File -> New -> Import Module 然后选择sdk的目录/sdk/java, 像下面这样, 注意这里选择好后, module的名字应该会自动生成为openCVLibrary320

这里可能你用的是android studio3.2以上的版本, 界面上稍有改动, 大家看一下是差不多的内容就可以了;

然后项目左上角选中这个Android视图

然后右键选择open module settings (mac 下快捷键command+;)
然后选到这个module dependency里面, 添加openCVLibrary320, 把它依赖到app中;

这里可能你用的是android studio3.2以上的版本, 界面上稍有改动, 可能找不到这个dependencies目录, 看一下差不多的地方就行了, 主要就是在app这个module中使用opencvlibrary的module

到这里为止, 应该就能正常在app中使用opencv的库了;

注意, 这里经常有网上测试能否使用opencv的代码是使用下面这种代码来测试的

static {
    System.loadLibrary("native_lib");
}

但是这种代码是用于在之前说的第一种方法里, 它是回去项目中找一个叫nativelib的一个cpp文件, 然后进行链接, 但这不是我们采取的方法, 所以做到这里, 上面的代码是不能运行的;

但是正常使用OCV的一些sdk是没有问题的, 比如新建一个Mat之类的操作~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章