【发布时间】:2013-03-23 21:10:22
【问题描述】:
我在 Ubuntu 上使用 OpenCV 2.4.4 和 Eclipse Juno。 我的问题和这个类似OpenCV for android sample programs showing error
但现在让我很奇怪。我周末的大部分时间都在试图让 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
我没想到会这么难。我应该补充一点,我已经在另一个项目中成功地使用了带有 Android 的 opencv
编辑 我还想说我只是做了一个快速的'n脏测试opencv操作。我编写了一个快速的 Sobel 函数,并将其作为 Java 文件中的本机函数调用,并成功地“sobelled”了一个位图。当然,我仍然必须关闭/打开我的项目才能做到这一点。
【问题讨论】:
-
对于您的 Sobel 测试,您是使用 Eclipse 还是 ndk-build 编译的?您确定您在 Eclipse 项目中正确链接了 OpenCV4Android 吗?您是否将
<OpenCV4Android>/sdk/native/jni/include添加到项目属性中的“路径和符号”中?看起来您的代码没问题(因为 ndk-build 在命令行中工作)但 Eclipse 只是无法识别该库...
标签: android eclipse opencv android-ndk