2014-06-07 25 views
1

我试图让应用程序,可以检测Android中的图片相似性。我试图用OpenCV和SurfFeatureDetector来做到这一点。但是,现在在OpenCV中它不包nonfree我试图按照本教程 https://sites.google.com/site/wghsite/technical-notes/sift_surf_opencv_android去,但我得到的问题:OpenCV安卓与非自由包(SURF)

描述资源路径位置键入make:* [OBJ /本地/ armeabi-V7A/libmixed_sample.so]错误1 appname中C/C++

问题配方目标`OBJ /本地/ armeabi-V7A/libmixed_sample.so” 失败appname中线588,外部位置: C:\ NVPACK \ android-ndk-r9d \ build \ core \ build-binary.mk C/C++

问题未定义引用'cv :: SURF :: SURF(double,int,int,bool, bool)'appname line 54,external location: C:\ NVPACK \ android-ndk-r9d \ toolchains \ arm -linux-androideabi-4.6 \ prebuilt \ windows \ arm-linux-androideabi \ bin \ ld.exe: 。\ obj \ local \ armeabi-v7a \ objs-debug \ mixed_sample \ jni_part.o: 函数 Java_sk_appname_MyOpenCVActivity_MojaSkuska: JNI \ jni_part.cpp C/C++

问题未定义参照 'VTT为CV :: SURF' appname中线107, 外部位置: C:\ NVPACK \机器人-NDK-r9d \工具链\臂-Linux的androideabi-4.6 \ prebuilt \ windows \ arm-linux-androideabi \ bin \ ld.exe: 。\ obj \ local \ armeabi-v7a \ objs-debug \ mixed_sample \ jni_part.o: 函数 cv :: SURF ::〜SURF():sdk \ native \ jni \ include \ opencv2 \ nonfree \ features2d。 HPP C/C++

问题未定义提及 '虚函数表为CV :: SURF' 应用程序的名字线 107,外部位置: C:\ NVPACK \机器人-NDK-r9d \工具链\臂-Linux的androideabi-4.6 \ \ obj \ local \ armeabi-v7a \ objs-debug \ mixed_sample \ jni_part.o:在 函数中 cv :: SURF ::〜SURF( ):sdk \ native \ jni \ include \ opencv2 \ nonfree \ features2d.hpp C/C++ 问题

我真的很绝望,我试了3天使这个工作有很多的教程,但没有任何工作。这是Android.mk:

LOCAL_PATH := $(call my-dir) 

include $(CLEAR_VARS) 

OPENCV_CAMERA_MODULES:=on 
OPENCV_INSTALL_MODULES:=on 
#include ./sdk/native/jni/OpenCV-tegra3.mk 
include ./sdk/native/jni/OpenCV.mk 

LOCAL_MODULE := mixed_sample 
LOCAL_SRC_FILES := jni_part.cpp 
LOCAL_LDLIBS += -llog -ldl 

include $(BUILD_SHARED_LIBRARY) 


#pridane 

include $(CLEAR_VARS) 
LOCAL_MODULE := nonfree_prebuilt 
LOCAL_SRC_FILES := libnonfree.so 
include $(PREBUILT_SHARED_LIBRARY) 

include $(CLEAR_VARS) 
LOCAL_MODULE := opencv_java_prebuilt 
LOCAL_SRC_FILES := libopencv_java.so 
include $(PREBUILT_SHARED_LIBRARY) 

我不知道我是否有正确插入库 - 但在/库/ armeabi-V7A有建造非自由库。另外,当我在jni_part.cpp中进行导入时(我想使用SURF)#include <opencv2/nonfree/features2d.hpp>,没有错误也没问题。请帮助我,如果你能给我任何建议,那将是非常棒的。谢谢。

回答

0

主要问题是与Android.mk。

这是不可能添加2 LOCAL_SRC_FILES(我不知道为什么,在这我真的小白)。

因此,这是最后的版本:

LOCAL_PATH := $(call my-dir) 

include $(CLEAR_VARS) 

OPENCV_CAMERA_MODULES:=on 
OPENCV_INSTALL_MODULES:=on 
include ./sdk/native/jni/OpenCV.mk 

LOCAL_MODULE := mixed_sample 
LOCAL_SRC_FILES := jni_part.cpp \ 
    nonfree_init.cpp \ 
precomp.cpp \ 
sift.cpp \ 
surf.cpp 
LOCAL_LDLIBS += -llog -ldl 
include $(BUILD_SHARED_LIBRARY) 

LOCAL_C_INCLUDES:= ./sdk/native/jni/include 
LOCAL_MODULE := nonfree 
LOCAL_CFLAGS := -Werror -O3 -ffast-math 
LOCAL_LDLIBS += -llog 

这是非常奇怪的问题,但现在一切似乎都工作得很好。