首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在opencv 4.1.0中无法解决DescriptorExtractor和FeatureDetector的导入问题

在OpenCV 4.1.0中,DescriptorExtractor和FeatureDetector已经被废弃,取而代之的是cv::DescriptorMatcher和cv::Feature2D。这是由于OpenCV库的更新和改进所导致的变化。

cv::DescriptorMatcher是一个用于特征匹配的类,它可以根据不同的算法(如Brute-Force、FLANN等)进行特征匹配。它的作用是在给定一组特征描述子之后,找到最佳匹配的特征点。

cv::Feature2D是一个抽象类,它定义了特征提取和描述的接口。它的派生类(如cv::ORB、cv::SIFT、cv::SURF等)可以用于提取图像中的特征点,并生成相应的特征描述子。

在解决DescriptorExtractor和FeatureDetector导入问题的同时,可以采用以下步骤:

  1. 确保你已经正确安装了OpenCV 4.1.0版本,并且已经将其配置到你的开发环境中。
  2. 在你的代码中,使用以下头文件来导入cv::DescriptorMatcher和cv::Feature2D:
代码语言:txt
复制
#include <opencv2/opencv.hpp>
#include <opencv2/features2d.hpp>
#include <opencv2/xfeatures2d.hpp>
  1. 在代码中,使用cv::DescriptorMatcher和cv::Feature2D的相应方法来进行特征匹配和特征提取。例如,使用cv::DescriptorMatcher的match()方法进行特征匹配,使用cv::Feature2D的detectAndCompute()方法进行特征提取。

以下是一些示例代码,展示了如何使用cv::DescriptorMatcher和cv::Feature2D:

代码语言:txt
复制
cv::Mat image1 = cv::imread("image1.jpg", cv::IMREAD_GRAYSCALE);
cv::Mat image2 = cv::imread("image2.jpg", cv::IMREAD_GRAYSCALE);

// 创建特征提取器和描述子匹配器
cv::Ptr<cv::Feature2D> detector = cv::ORB::create();
cv::Ptr<cv::DescriptorMatcher> matcher = cv::DescriptorMatcher::create("BruteForce-Hamming");

// 检测和计算特征点和描述子
std::vector<cv::KeyPoint> keypoints1, keypoints2;
cv::Mat descriptors1, descriptors2;
detector->detectAndCompute(image1, cv::noArray(), keypoints1, descriptors1);
detector->detectAndCompute(image2, cv::noArray(), keypoints2, descriptors2);

// 特征匹配
std::vector<cv::DMatch> matches;
matcher->match(descriptors1, descriptors2, matches);

// 显示匹配结果
cv::Mat matchImage;
cv::drawMatches(image1, keypoints1, image2, keypoints2, matches, matchImage);
cv::imshow("Matches", matchImage);
cv::waitKey(0);

在这个例子中,我们使用了ORB特征提取器和Brute-Force匹配器来进行特征匹配。你可以根据你的需求选择不同的特征提取器和匹配器。

对于更多关于cv::DescriptorMatcher和cv::Feature2D的详细信息,你可以参考OpenCV官方文档中的以下链接:

希望这些信息能够帮助你解决在OpenCV 4.1.0中使用DescriptorExtractor和FeatureDetector的导入问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 如何编译OpenCV4.1.0支持OpenVINO推断引擎加速支持

    OpenVINO自发布以来,依靠其强大的加速性能,在CPU上进行深度学习模型加速优势,迅速受到很多公司与开发者的青睐,但是如何从OpenCV源码编译生成OpenVINO的inferinference engine(IE)加速推理支持的OpenCV版本,一直是很多开发者头疼的事情,很多人都不得不使用OpenVINO官方编译的OpenCV支持版本,无法实现从源码开始的定制化的OpenCV版本编译。本人从2018年12月份开始研究OpenVINO开发技术,上半年也发布一系列的OpenVINO开发技术相关文章,得到了大家热烈响应,今天我们就来很详细的一步一步的教大家如何从OpenCV源码开始在windows10系统下如何编译IE加速版本的OpenCV安装包,并如何配置与测试IE支持之后的OpenCV DNN的卓越性能。

    03

    C++与MySQL的冲突

    当在C++代码中,直接引用MySQL头文件时,可能会遇到如下错误: In file included from /usr/include/c++/4.1.0/bits/char_traits.h:46,                  from /usr/include/c++/4.1.0/string:46, /usr/include/c++/4.1.0/bits/stl_algobase.h:92:28: error: macro "swap" requires 3 arguments, but only 2 given /usr/include/c++/4.1.0/bits/stl_algobase.h:127:26: error: macro "swap" requires 3 arguments, but only 2 given /usr/include/c++/4.1.0/bits/vector.tcc:176:20: error: macro "swap" requires 3 arguments, but only 1 given /usr/include/c++/4.1.0/cctype:70: error: '::isalnum' has not been declared /usr/include/c++/4.1.0/cctype:71: error: '::isalpha' has not been declared /usr/include/c++/4.1.0/cctype:72: error: '::iscntrl' has not been declared /usr/include/c++/4.1.0/cctype:73: error: '::isdigit' has not been declared /usr/include/c++/4.1.0/cctype:74: error: '::isgraph' has not been declared /usr/include/c++/4.1.0/cctype:75: error: '::islower' has not been declared /usr/include/c++/4.1.0/cctype:76: error: '::isprint' has not been declared /usr/include/c++/4.1.0/cctype:77: error: '::ispunct' has not been declared /usr/include/c++/4.1.0/cctype:78: error: '::isspace' has not been declared /usr/include/c++/4.1.0/cctype:79: error: '::isupper' has not been declared /usr/include/c++/4.1.0/cctype:80: error: '::isxdigit' has not been declared /usr/include/c++/4.1.0/cctype:81: error: '::tolower' has not been declared /usr/include/c++/4.1.0/cctype:82: error: '::toupper' has not been declared 解决办法: 尽量对MySQL进行二次包装,让调用者看不到MySQL头文件,如在CPP中包含: #include #include #include 在头文件中只进行引用声明: struct st_mysql; struct st_mysql_res; typedef long num_t; typedef char ** MYSQL_ROW;  /** return data as array of strings */ 不要在头文件直接include到MySQL的头文件,而且保证只在一个CPP文件中有对MySQL文件的include,否则你可能遇到很多莫名其妙的编译错误,如果不想到这一点,即使花一天时间也未必能找到错误原因。

    03
    领券