关于在Eclipse上使用opencv案例的相关问题总结

到目前为止,2016年6月,opencv for android 官方最新版本是3.1,上面给出了很多案例源码,包括非常有名的人脸检测,精度不错。

官方的案例都是在Eclipse上写的,所以个人处于便于学习的目的也就使用了Eclipse,但是我在按照网上先导入sdk,配置好opencv java库,再把案例导入时出现一大堆错误,后来查证全是库的问题

下面仔细讲解案例:

第一类,没有使用JNI

,即仅仅使用opencv的java接口调用opencv的,导入时,比如官方第一个案例opencv sample -15 puzzled ,常常会有以下报错:
报错1

这是因为你的java库没有导入到该项目中,选中项目,右键打开properties或者快捷键Alt+Enter,你会发现如下错误提示:
这里写图片描述


这时只要将错误的library删掉,添加刚刚新导入的library就可以发现项目没有错误了


这里写图片描述


如果到这里,大家觉得万事大吉了,那就是too young too simple,
接下来才是精华,不信,你可以把项目生成apk,放到手机中,再安装相应的opencv manager,会发现它一直提示你opencv manager安装不正确,然后你会换各种版本的opencv manager,直到你换个遍都没找到,这时你应该思考是不是代码的问题,这就对喽!!


很简单,因为你没有添加opencv库,有人又想问了,我之前不是加了?,但是我要说这是两个库,在…\OpenCV-3.0.0-android-sdk\OpenCV-android-sdk\sdk\native下面有个libs文件夹,下面是你程序运行需要先添加到apk中的库,把libs文件夹整体拷贝到你项目的根目录下,即和src,bin,res等文件夹放到一起这时再运行就可以了。官方可能都没注意到这个错误,我使用他们打包好的apk都提示opencv manager没有正确安装!!!!


第二类,使用了jni(java native interface)

这类和前面相同的部分就不写了,还是举个例子,比如导入tutorial 2-mixed processing时,

  1. 不仅有前面的错误
  2. 还会提示没有找到ndk-build命令
  3. 如果你打开jni文件夹下面的jni_part.cpp文件还会发现vector头文件错误

第一个前面有,这里就不多说了,
第二个错误,还是找到properties,
这里写图片描述


在builder command这有一段${NDKROOT}/ndk-build.cmd
注意这个环境变量NDKROOT,我之前在网上发现很多人在配置NDK时,写的是NDK_ROOT环境变量,这在Eclipse的默认环境变量不同,就多了一个”_“,导致错误,在这里,我建议大家修改计算机环境变量为NDKROOT,不要改Eclipse的,因为Eclipse不止这一处引用NDK使用NDKROOT环境变量名


第三个错误,那个错误是因为没有配置好NDK库,这时选择C++ general–Paths and symbols中的include选项,你会发现如下的配置:


这里写图片描述


GNU c++中引用了NDK的4.6版本,4.6版本,4.6版本,重要的事说三遍,这时我打开我的ndk相应的文件夹(备注,我使用的ndk是r10e)
这里写图片描述


这里根本没有4.6,所以我果断改成4.8,程序运行成功了,大功告成

猜你喜欢

转载自blog.csdn.net/u014377853/article/details/51673490
今日推荐