2014-11-24 123 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标记正常工作