Opencv4.3.0+android studio3.6.1运行打开摄像头示例
写在前面:opencv的demo都是基于eclipse开发环境来演示opencv功能的,还不是基于Android studio来演示。
参考链接:https://blog.csdn.net/weixin_43815930/article/details/90516455
https://blog.csdn.net/sakurakider/article/details/80470358
https://www.jianshu.com/p/c74c64cda4ad
一.导言
本人一开始用的是最新版的opencv4.3.0+android studio 3.6.1去进行opencv的导入练习,但总是出错,迟迟解决不了,后来选择opencv3.4.1来进行配置,在这里建议大家不要去选择最高版本的开发包,毕竟坑太多,还是选择较稳定的相对低的版本。
二.配置
华硕灵耀S2+win10+android studio 3.6.1+opencv3.4.1
三.下载opencv3.4.1的包
下载链接:https://opencv.org/opencv-3-4-1/
这是我解压后的内容:
四.导入OpenCV
Android Studio菜单–>File–>New–>Import Module
选择C:\Android_learning\for_opencv\OpenCV-android-sdk\sdk\java
Module name: Android studio会自动填充这项为openCVLibrary341 ,不用自己改,但是本人在导入opencv4.3.0的时候没有自动填充,没有关系,我们也可以自己写一个(如opencv430等)。
点“Next”,下一步,默认的三个全勾上
1)File–>Project Structure
2)在最左边一栏中选择Dependencies
3)左边Modules栏下选择app
4)在declared Dependencies中点击右边栏中的“+”,选择第三个Module Dependency,然后选择opencv341,最后apply。
注意:有时会显示没有可引用的包,可以在build.gradle中添加implementation project(":opencv340"),这个在本人上一篇博客中有提及,这里不再赘述。
五.1)将视图由Android切换到Project,如图所示
2)点击app,打开app根目录下的build.gradle文件,注意
compileSdkVersion,最build tools中可以查看自己的版本
buildToolsVersion,
minSdkVersion,
targetSdkVersion
后面的数值与opencv341的build.gradle保持一致,没有的项目要加上。
App是应用,所以app的build.gradle的首行:
apply plugin: ‘com.android.application’;
opencv341是我们导入的包,所以其对应的build.gradle的首行:
apply plugin: ‘com.android.library’
如果opencv的build.gradle有appID行的记得删掉
在App的build.gradle里面添加东西
添加的代码如下:
compile fileTree(dir: “$buildDir/native-libs”, include: ‘native-libs.jar’)
task nativeLibsToJar(type: Jar,description:‘create a jar archive of the native libs’){
destinationDir file("$buildDir/native-libs")
baseName ‘native-libs’
from fileTree(dir: ‘libs’,include: ‘**/*.so’)
into ‘lib/’
}
tasks.withType(JavaCompile){
compileTask -> compileTask.dependsOn(nativeLibsToJar)
}
六.1)把OpenCV-android-sdk文件下C:\Android_learning\for_opencv\OpenCV-android-sdk\sdk\native下的libs文件夹拷贝到自己的安卓项目下,我的项目名叫做TestOpencvAd下面,并且将libs改名为jniLibs.
3)此时前期准备工作就完成了,可以开始自己写代码了。
七.为了验证自己的opencv库是否成功导入,最好还是采取运行官方示例的方式,我是以这个博客的教程来进行测试,但是最后还是出了问题,下面以这个例程为基础,去记录自己遇到的错误及解决办法。
https://www.jianshu.com/p/c74c64cda4ad
https://blog.csdn.net/weixin_43815930/article/details/90516455建议这两个链接都要看相互补充
最后把自己运行成功的代码贴一下,方便大家使用,这是一个打开摄像头的简单demo,由于水平有限,不足之处,请大家留言指正,谢谢!
链接:https://pan.baidu.com/s/182pwblE_py9H0xb-X2vTpw
提取码:pdnu