2

我现在正在开发一个应用程序,并计划通过 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 本机部分)中的步骤并想要运行脚本 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 应用程序中使用带有非自由模块的原生 OpenCV 库?

4

3 回答 3

1

如果你只是想在 nonfree 模块中使用 SIFT 或 SURF,你不需要重建整个 opencv 包。您只能将非自由模块构建为独立库并在您的项目中使用它。本教程将为您提供有关如何执行此操作的详细信息。

于 2013-05-23T19:20:42.353 回答
1

我也遇到了这个问题。我的解决方法是安装最新版本 2.4.5 ,然后按照教程进行操作。1.下载干净的2.4.5版本并解压。2.按照教程。 http://code.opencv.org/projects/opencv/wiki/Trunk_OpenCV_for_Android

这修复了您提到的错误。之后我又遇到了另一个错误,我现在不记得它是什么了,但是我看到了错误在哪里,我用 2.4.2 版脚本中的行替换了该行,就是这样(它们之间的差异很小)

于 2013-05-28T15:50:37.647 回答
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 (NOT IOS) )

OCV_OPTION(WITH_TIFF "包括 TIFF 支持" OFF IF (NOT IOS) )

完毕!

于 2016-04-01T08:01:17.180 回答