opencv新版sift surf
时间: 2023-09-14 17:04:35 浏览: 205
C# opencvsharp sift和surf特征点匹配演示源码
OpenCV的新版本(3.4及更高版本)中不再持SIFT和SURF算法。这是由于SIFT和SURF算法的专利限制,OpenCV开发团队决定将这些算法从默认模块中移除。
如果你仍然希望使用SIFT和SURF算法,你可以考虑使用非官方的扩展模块,例如OpenCV contrib库。在OpenCV contrib库中,你可以找到名为xfeatures2d的模块,它提供了SIFT和SURF算法的实现。
要在你的项目中使用SIFT和SURF算法,请确保已经安装了OpenCV contrib库,并引入以下头文件:
```cpp
#include <opencv2/xfeatures2d.hpp>
```
然后,你可以按照以下示例代码使用SIFT和SURF算法:
```cpp
cv::Ptr<cv::xfeatures2d::SIFT> sift = cv::xfeatures2d::SIFT::create();
cv::Ptr<cv::xfeatures2d::SURF> surf = cv::xfeatures2d::SURF::create();
cv::Mat image;
// 读取图像到image
std::vector<cv::KeyPoint> keypoints;
cv::Mat descriptors;
sift->detectAndCompute(image, cv::noArray(), keypoints, descriptors);
```
需要注意的是,由于SIFT和SURF算法的特征点检测和描述子计算比较耗时,建议在使用时注意性能问题。此外,如果你只是需要一种特征点检测和描述子算法,也可以考虑使用OpenCV中支持的其他算法,如ORB、BRISK和AKAZE等。
阅读全文