报错1:
undefined reference to cv::DescriptorMatcher::create(int)
undefined reference to `cv::DescriptorMatcher::knnMatch(cv::_InputArray const&, cv::_InputArray const&, std::vector<std::vector<cv::DMatch, std::allocator<cv::DMatch> >, std::allocator<std::vector<cv::DMatch, std::allocator<cv::DMatch> > > >&, int, cv::_InputArray const&, bool) const
undefined reference to `cv::DescriptorMatcher::knnMatch(cv::_InputArray const&, cv::_InputArray const&, std::vector<std::vector<cv::DMatch, std::allocator<cv::DMatch> >, std::allocator<std::vector<cv::DMatch, std::allocator<cv::DMatch> > > >&, int, cv::_InputArray const&, bool) const
查找发现这三个函数都是 feature2d.hpp 中定义的函数,所以添加头文件:
#include <opencv2/features2d/features2d.hpp>
结果依然报错,因为 在opencv中可以找到这三个函数的定义,所以应该是链接问题,在cmakeList 中添加:
target_link_libraries(project ${OpenCV_LIBS} -lopencv_features2d)
问题解决。
报错2:
段错误 (核心已转储)
这个错误就需要一段一段注释代码,找到报错的真正位置,我的是因为数组越界访问。