我在 Ubuntu 上使用 OpenCV 2.4.4 和 Eclipse Juno。我的问题类似于这个OpenCV for android 示例程序显示错误
但现在让我很奇怪。我周末的大部分时间都在试图让 ndk 和 opencv 库发挥得很好,但我仍然无法让它工作。我在我的测试 C++ cpp 文件中包含以下内容 -
#include <jni.h>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <cstdlib>
using namespace cv; //this is a problem
...
...
当我尝试构建“找不到命名空间 cv”时,它会告诉我。哦,好吧,我一定是写错了一些路径,或者没有使用正确的库,对吧?错误的。在终端中,ndk-build构建 .so 文件没有任何错误。我可以在项目文件夹中看到它们。但是,如果我尝试在 eclipse 中构建,即在虚拟设备或真实设备上构建用于 tesitng 的 apk,那么我会收到命名空间 cv 错误并且构建失败,然后在 cpp 文件中,cv 带有红色下划线,并且在 eclipse 中文件标记为红色,在“更正”此文件之前,我什至无法尝试构建。
显然我做错了什么。但是如果我关闭我的 eclipse 项目然后重新打开它,cpp 文件不再标记为红色,我可以进行 apk 构建。如果我尝试打开 cpp 文件,红色会返回并且在我完成项目关闭/打开 rigmarole 之前不会发生更多构建。
老实说,我不知道问题的原因是什么。任何帮助将不胜感激。
我的 android.mk 文件:
include $(CLEAR_VARS)
OPENCV_CAMERA_MODULES:=off
OPENCV_INSTALL_MODULES:=on
OPENCV_LIB_TYPE:=STATIC
include /the/correct/path/tp/opencv/sdk/native/jni/OpenCV.mk
LOCAL_MODULE := mylib
LOCAL_SRC_FILES := mylib.cpp
include $(BUILD_SHARED_LIBRARY)
应用程序.mk
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_ABI := all #i have tried various targets
APP_PLATFORM := android-8
APP_MODULES := mylib
我没想到会这么难。我应该补充一点,我已经在另一个使用 Eclipse 3.5(我认为)和 OpenCV 2.4.2 在 WIndows 上构建的 rproject 中成功使用了带有 Android 的 opencv
编辑我还想说我只是做了一个快速的'n脏测试opencv操作。我编写了一个快速的 Sobel 函数,并将其作为 Java 文件中的本机函数调用,并成功“sobelled”了一个位图。当然,我仍然必须关闭/打开我的项目才能做到这一点。