2014-11-24 64 views
1

我無法使用OpenCV示例在Android中查找對象。我從OpenCV4Android SDK中預建靜態庫。 我Android.mk未定義引用'cv :: findHomography

# Open CV libraries 
include $(CLEAR_VARS) 
LOCAL_MODULE := opencv_features2d 
LOCAL_SRC_FILES := prebuilt/OpenCV/libs/$(TARGET_ARCH_ABI)/libopencv_features2d.a 
include $(PREBUILT_STATIC_LIBRARY) 

include $(CLEAR_VARS) 
LOCAL_MODULE := opencv_core 
LOCAL_SRC_FILES := prebuilt/OpenCV/libs/$(TARGET_ARCH_ABI)/libopencv_core.a 
include $(PREBUILT_STATIC_LIBRARY) 

include $(CLEAR_VARS) 
LOCAL_MODULE := opencv_imgproc 
LOCAL_SRC_FILES := prebuilt/OpenCV/libs/$(TARGET_ARCH_ABI)/libopencv_imgproc.a 
include $(PREBUILT_STATIC_LIBRARY) 

include $(CLEAR_VARS) 
LOCAL_MODULE := opencv_calib3d 
LOCAL_SRC_FILES := prebuilt/OpenCV/libs/$(TARGET_ARCH_ABI)/libopencv_calib3d.a 
include $(PREBUILT_STATIC_LIBRARY) 

include $(CLEAR_VARS) 
LOCAL_MODULE := opencv_flann 
LOCAL_SRC_FILES := prebuilt/OpenCV/libs/$(TARGET_ARCH_ABI)/libopencv_flann.a 
include $(PREBUILT_STATIC_LIBRARY) 

include $(CLEAR_VARS) 
LOCAL_MODULE := opencv_contrib 
LOCAL_SRC_FILES := prebuilt/OpenCV/libs/$(TARGET_ARCH_ABI)/libopencv_contrib.a 
include $(PREBUILT_STATIC_LIBRARY) 

include $(CLEAR_VARS) 
LOCAL_MODULE := opencv_legacy 
LOCAL_SRC_FILES := prebuilt/OpenCV/libs/$(TARGET_ARCH_ABI)/libopencv_legacy.a 
include $(PREBUILT_STATIC_LIBRARY) 

include $(CLEAR_VARS) 
LOCAL_MODULE := opencv_ml 
LOCAL_SRC_FILES := prebuilt/OpenCV/libs/$(TARGET_ARCH_ABI)/libopencv_ml.a 
include $(PREBUILT_STATIC_LIBRARY) 

include $(CLEAR_VARS) 
LOCAL_MODULE := opencv_objdetect 
LOCAL_SRC_FILES := prebuilt/OpenCV/libs/$(TARGET_ARCH_ABI)/libopencv_objdetect.a 
include $(PREBUILT_STATIC_LIBRARY) 

include $(CLEAR_VARS) 
LOCAL_MODULE := opencv_tbb 
LOCAL_SRC_FILES := prebuilt/OpenCV/3rdparty/libs/$(TARGET_ARCH_ABI)/libtbb.a 
include $(PREBUILT_STATIC_LIBRARY) 

# opencv_nonfree 
include $(MY_CORE_PATH)/opencv_nonfree/Android.mk 

# Detect image 
include $(MY_CORE_PATH)/detectimage/Android.mk 

非自由Android.mk

LOCAL_PATH := $(call my-dir) 

include $(CLEAR_VARS) 

LOCAL_MODULE := opencv_nonfree 
LOCAL_SRC_FILES := := nonfree_init.cpp \ 
sift.cpp \ 
surf.cpp 
LOCAL_C_INCLUDES := $(MY_CORE_PATH)/prebuilt/OpenCV/include 
LOCAL_STATIC_LIBRARIES := opencv_features2d opencv_imgproc opencv_video opencv_flann opencv_core opencv_tbb 
LOCAL_LDLIBS := -ldl -lz -llog 

include $(BUILD_SHARED_LIBRARY) 

而且detectimage Android.mk

LOCAL_PATH := $(call my-dir) 

include $(CLEAR_VARS) 

LOCAL_MODULE := detect_image 
LOCAL_SRC_FILES := detectimage.cpp 
LOCAL_C_INCLUDES := $(MY_CORE_PATH)/prebuilt/OpenCV/include 
LOCAL_SHARED_LIBRARIES := opencv_nonfree 
LOCAL_LDLIBS := -ldl -lz -llog 

include $(BUILD_SHARED_LIBRARY) 

最後的.cpp問題部分是

std::vector<Point2f> obj; 
std::vector<Point2f> scene; 
//.... 
Mat H = findHomography(obj, scene, CV_RANSAC); 
+0

是findHomography features2d或calib3d LIB的一部分嗎?!? – Micka 2014-11-24 20:29:10

+0

從openCv文檔類別我認爲你必須添加calib3d庫到您的庫 – Micka 2014-11-24 21:54:54

+0

據我所知它是calib3d庫的一部分。它被添加爲靜態庫 – 2014-11-25 01:39:20

回答

1

外貌喜歡 一些問題,STL

如果Application.mk文件

APP_STL := gnustl_shared 

一切設置APP_STL標記正常工作