之前一直用IntelliJ IDEA 导入 opencv_android_sdk 的 java 包,在最后一步finish时,始终出错.

后来重新安装Android Studio 重复以上步骤,能顺利导入包 openCVLibrary320 (原因未知).

导入包后注意修改 sdk的 build.gradle 中的

android {
compileSdkVersion 26
buildToolsVersion
"26.0.2" defaultConfig {
minSdkVersion 15
targetSdkVersion
26
}
...
}

与 app build.gradle 中的一致.

按照网上很多教程:

接着在 app/src/main 目录下 创建一个jniLibs 目录,然后把sdk/native/libs 下所有文件 拷贝到jniLibs下,编译,运行。

这一步执行后运行程序会报错,指向的目标大概都是 需要loadLibrary.

OK,我就加入了:

    // private static String strLibraryName = Core.NATIVE_LIBRARY_NAME;
private static String strLibraryName = "opencv_java3"; // 不需要添加前缀 libopencv_java3 static {
try {
Log.e("loadLibrary", strLibraryName);
System.loadLibrary(strLibraryName);
} catch (UnsatisfiedLinkError e) {
Log.e("loadLibrary", "Native code library failed to load.\n" + e);
} catch (Exception e) {
Log.e("loadLibrary", "Exception: " + e);
}
}

还是报错哦,找不到 libopencv_java3.so ,搞笑了,我就怀疑这个 libopencv_java3 路径有问题或者根本没有关联到项目,因为教程中直接让你把这个文件夹内容拷贝过来.

查资料 无果.

后来,把 jniLibs 目录放到 src/main/ 目录下 ,与Java 目录同一级. 然后在app 的 build.gradle 中添加:

android {
compileSdkVersion 26
buildToolsVersion "26.0.2"
defaultConfig {
applicationId "com.***.opencvdemo2"
minSdkVersion 15
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
sourceSets {
main {
jniLibs.srcDirs = ['src/main/jniLibs']
}
}

}
...
}

这样编译就能顺利通过.

最后:

其实根本不需要  jniLibs  这个目录.我本来导入了opencv 的java 包.

所以,删掉删掉.根本不需要拷贝什么文件.导入包就可以了.后续的配置什么的都删掉删掉.

下一篇,将会记录,Android + openCV 简单的静态图片人脸检测.

Android+openCV 的坑的更多相关文章

  1. 【感受】android + opencv + umat + opencl使用感受

    近期编译了android下支持opencl的opencv,使用opencl能力的关键是用cv::UMat替换cv::Mat. 实际使用后发现坑很多,非常不成熟,不推荐使用这种方式来提升实际产品的性能. ...

  2. WINDOWS系统Eclipse+NDK+Android + OpenCv

    WINDOWS系统Eclipse+NDK+Android + OpenCv 参考文档博客 1 NDK环境搭建 http://jingyan.baidu.com/article/5d6edee22d90 ...

  3. Android Tips – 填坑手册

    出于: androidChina   http://www.androidchina.net/3595.html 学习 Android 至今,大大小小的坑没少踩,庆幸的是,在强大的搜索引擎与无私奉献的 ...

  4. Android OpenCV 图像识别

    最近打算写一个android 平台opencv 的小程序,着手查找了一下资料.网络上的资料参差不齐,有一些都比较老旧,我参考了前面的方法找到了一个简单的搭建方法,分享给大家. 0,环境的搭建: jav ...

  5. Android OpenCV样例调试+报错处理

    1.OpenCV样例调试:<OpenCV Sample - image-manipulations>       blog+报错:E/CAMERA_ACTIVITY(17665): Cam ...

  6. [置顶] xamarin android toolbar(踩坑完全入门详解)

    网上关于toolbar的教程有很多,很多新手,在使用toolbar的时候踩坑实在太多了,不好好总结一下,实在浪费.如果你想学习toolbar,你肯定会去去搜索androd toolbar,既然你能看到 ...

  7. android opencv

    最近工作需求:用opencv来先做一个demo.扫描照片进行边缘检测和透视矫正. 之后会加入照片降噪等处理. 请教了一下搞图像的同事.他的提议: 1.绿盟的“黄色照片检测” 用的是动态的opencv库 ...

  8. Unity Android交互过坑指南

    Unity Android交互过坑指南 介于网上看过很多unity和Android交互的教程,都或多或少的漏掉了一些部分,导致编译过程中出现各种问题,特此整理一份教程,仅供参考 介绍 本次实现的是在游 ...

  9. eclipse+android+opencv环境搭建的步骤

    ---恢复内容开始--- 2016年4月12日编写 一.第一步:搭建eclipse开发环境 1.在eclipse官网中下载eclipse.zip进行解压即可.没有版本要求,但要和电脑的位数相匹配.如: ...

随机推荐

  1. socket编程初识

    一.socket 1.socket层 2.socket的理解 写python代码的时候socket就像是一个模块,通过import导入,通过调用模块中的方法建立两个进程之间的连接和通信. Socket ...

  2. Apache服务器配置与管理

    一.Apache服务器的目录和文件 1.WEB站点目录 /var/www Apache站点文件的目录 /var/www/html 存放WEB站点的WEB文件 /var/www/cgi-bin CGI程 ...

  3. dajngo cache,throttling

    缓存 背景介绍: 动态网站的问题就在于它是动态的. 也就是说每次用户访问一个页面,服务器要执行数据库查询,启动模板,执行业务逻辑以及最终生成一个你所看到的网页,这一切都是动态即时生成的. 从处理器资源 ...

  4. 「LibreOJ NOI Round #1」验题

    麻烦的动态DP写了2天 简化题意:给树,求比给定独立集字典序大k的独立集是哪一个 主要思路: k排名都是类似二分的按位确定过程. 字典序比较本质是LCP下一位,故枚举LCP,看多出来了多少个独立集,然 ...

  5. Vue+koa2开发一款全栈小程序(9.图书详情页)

    1.获取图书详情 1.修改server/controllers/bookdetail.js为 const {mysql}=require('../qcloud') module.exports=asy ...

  6. [Luogu P4180][BJWC 2010]严格次小生成树

    严格次小生成树,关键是“严格”,如果是不严格的其实只需要枚举每条不在最小生成树的边,如果得到边权和大于等于最小生成树的结束就行.原理就是因为Kruskal非常贪心,只要随便改一条边就能得到一个非严格的 ...

  7. 通信协议:HTTP、TCP、UDP

    TCP   HTTP   UDP: 都是通信协议,也就是通信时所遵守的规则,只有双方按照这个规则“说话”,对方才能理解或为之服务. TCP   HTTP   UDP三者的关系: TCP/IP是个协议组 ...

  8. 013_RomanToInteger

    #####solution1####faster#### def romanToInt(s): d={ 'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, ...

  9. 个人认为一个比较完整,基于tp5平台,可快速开发的B2C平台

    现在全民创业,做电商的人很多,大大小小的技术公司也很多,报价也很奇葩,从100到十万的都有,把人都能转晕,有朋友问我,你们创业是不是很赚钱,其实,外行不知道内行的苦,创业控制成本第一,活下来才能赚钱. ...

  10. 字符串常量池和String.intern()方法在jdk1.6、1.7、1.8中的变化

    字符串常量池也是运行时常量池 jdk1.6中,它是在方法区中,属于“永久代” jdk1.7中,它被移除方法区,放在java堆中 jdk1.8中,取消了“永久代”,将常量池放在元空间,与堆独立了 pub ...