从主干构建OpenCV4Android

时间:2013-03-24 13:44:17

标签: android eclipse opencv

我现在正在开发一个应用程序,并计划通过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库?

3 个答案:

答案 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))

完成!