2014-06-07 63 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 

這是非常奇怪的問題,但現在一切似乎都工作得很好。