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);
是findHomography features2d或calib3d LIB的一部分吗?!? – Micka 2014-11-24 20:29:10
从openCv文档类别我认为你必须添加calib3d库到您的库 – Micka 2014-11-24 21:54:54
据我所知它是calib3d库的一部分。它被添加为静态库 – 2014-11-25 01:39:20