4

我在 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”了一个位图。当然,我仍然必须关闭/打开我的项目才能做到这一点。

4

2 回答 2

1

嗨,我遇到了同样的问题,在我在“opencv android sdk”下面添加了包含问题的路径后消失了。

exp : C:\project\OpenCV-2.4.6-android-sdk\sdk\native\jni\include 用你的 opencv-android-sdk 路径切换路径。

于 2013-09-10T14:11:19.373 回答
0

我知道这可能为时已晚,但在我的情况下(Windows + Eclipse)我纠正了这个问题,只是将路径和符号中的反斜杠“\”更改为斜杠“/”,包括 opencv jni 库。

示例:错误的 H:\opencv\sdk\native\jni\include 正确的 H:/opencv/sdk/native/jni/include

于 2014-03-23T16:22:26.720 回答