【问题标题】:Opencv SIFT undefined references issueOpencv SIFT未定义参考问题
【发布时间】:2017-04-23 16:44:00
【问题描述】:

在函数keypoint_calc(cv::Mat)': FilePath/MyFirstOpenCVJNI-master/jni/first-opencvjni.cpp:35: undefined reference tocv::xfeatures2d::SIFT::create(int, int, double, double, double)'

./obj/local/arm64-v8a/objs/first-opencvjni/first-opencvjni.o:在函数sift_descriptor(cv::Mat, std::vector<cv::KeyPoint, std::allocator<cv::KeyPoint> >)': FilePath/MyFirstOpenCVJNI-master/jni/first-opencvjni.cpp:45: undefined reference tocv::xfeatures2d::SIFT::create(int, int, double, double, double )'

#include <jni.h>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc_c.h>
#include <opencv/cv.h>
#include <opencv2/opencv.hpp>
#include <GLES2/gl2.h>
#include <android/log.h>

#include <opencv2/flann/flann.hpp>
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/calib3d/calib3d.hpp"
#include "opencv2/nonfree/nonfree.hpp"
#include "opencv2/nonfree/features2d.hpp"
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/xfeatures2d.hpp>
#include <iostream>

#define  LOG_TAG    "cpp-file"

是我的包含。

在这些提到的行中,我有以下代码。

cv::Ptr<cv::xfeatures2d::SIFT> feature_detector = cv::xfeatures2d::SIFT::create(200);

cv::Ptr<cv::xfeatures2d::SIFT> feature_detector = cv::xfeatures2d::SIFT::create(200);

我是 JNI 的菜鸟,任何帮助将不胜感激。

【问题讨论】:

    标签: android c++ opencv android-ndk java-native-interface


    【解决方案1】:

    未定义的引用链接器报告。您的项目(Android.mkCMakeLists.txt)应包含 OpenCV 库。 SIFT 已获得专利,因此它不是免费的预构建 OpenCV Android 发行版的一部分。您可以单独构建 libnonfree.so 并将其用作应用中的预构建共享库,也可以将 SIFT 编译为静态库。

    详细说明可以在herehere 找到,但可能需要针对最新(3.2)版本和新的NDK 版本进行调整。如果不关心最新版本,也可以下载prebuilt binaries

    【讨论】:

      猜你喜欢
      • 2015-01-14
      • 2011-10-30
      • 1970-01-01
      • 2017-05-14
      • 2012-04-15
      • 1970-01-01
      • 2012-05-23
      • 2014-11-10
      • 1970-01-01
      相关资源
      最近更新 更多