我现在正在开发一个应用程序,并计划通过jni方法使用本机OpenCV库。参考本教程作为我的环境。
http://docs.opencv.org/doc/tutorials/introduction/android_binary_package/O4A_SDK.html
使用OpenCV的非自由模块,例如SurfFeatureDetector, 我必须自己构建opencv并使用OpenCV网站上的教程:
http://code.opencv.org/projects/opencv/wiki/Building_OpenCV4Android_from_trunk
当我按照教程中的步骤(windows native部分)并想运行脚本cmake_android.cmd来编译它们时, 我收到如下错误消息:
In file included from E:\git\opencv\3rdparty\libtiff\tif_stream.cxx:30:
E:\git\opencv\3rdparty\libtiff\/tiffiop.h:54:21: error: search.h: No such file or directory
make[2]: *** [3rdparty/libtiff/CMakeFiles/libtiff.dir/tif_stream.cxx.o] Error 1
make[1]: *** [3rdparty/libtiff/CMakeFiles/libtiff.dir/all] Error 2
make: *** [all] Error 2
有没有办法解决这个问题或让我能够在Android应用程序中使用带有nonfree模块的原生OpenCV库?
答案 0 :(得分:1)
如果您只想在非自由模块中使用SIFT或SURF,则无需重建整个opencv软件包。您只能将非自由模块构建为独立库并在项目中使用它。这个tutorial将为您提供有关如何执行此操作的详细信息。
答案 1 :(得分:1)
我也有这个问题。 我的修复是安装最新版本2.4.5,然后按照教程。 1.下载干净的2.4.5版本并解压缩。 2.关注教程。 http://code.opencv.org/projects/opencv/wiki/Trunk_OpenCV_for_Android
这可以修复您提到的错误。 我之后发生了另一个错误,我现在还不记得它是什么,但我看到错误在哪里,我用版本2.4.2的脚本中的行替换了这一行,就是这样(它们之间的差别很小) )
答案 2 :(得分:0)
编译器Opencv4android,libtiff默认打开。您可以关闭它以编译sdk,因为它的第三方。 search.h在NDK目录中不存在,但是系统路径usr / include /有一个,所以你编译了linux或mac的源代码,它运行正常。
溶液: 1,vi CMakeList.txt 2,搜索" TIFF",/ TIFF
修改
OCV_OPTION(WITH_TIFF"包含TIFF支持" ON IF(非IOS))
到
OCV_OPTION(WITH_TIFF"包括TIFF支持" OFF IF(不是IOS))
完成!