opencv3 C++ SIFT,SURF特征检测函数用法

因为对opencv还不够熟练,所以在调试的时候浪费了很多时间,网上找的代码也时各种版本参杂,试了好久老是报错,

在这里自己记录一下。

我在ubuntu1804下进行,opencv版本是3.4.10及对应的contrib。测试主要有三个文件,png图片一张,cpp文件一个以及一个CMakeLists.txt。

CMakeLists.txt如下:

1 cmake_minimum_required(VERSION 2.8)
 2 
 3 set(CMAKE_BUILD_TYPE "Release")
 4 # 添加c++ 11标准支持
 5 set(CMAKE_CXX_FLAGS "-std=c++11 -O2")
 6 
 7 # 寻找OpenCV库
 8 find_package(OpenCV REQUIRED)
 9 # 添加头文件
10 include_directories(${OpenCV_INCLUDE_DIRS})
11 
12 add_executable(ttt ttt.cpp)
13 target_link_libraries(ttt ${OpenCV_LIBS})

ttt.cpp文件如下:

#include <vector>
  #include <opencv2/opencv.hpp>
  #include <opencv2/xfeatures2d.hpp>


 using namespace std;
  using namespace cv;

 int main(int argc, char** argv) {

     cv::Mat img = cv::imread("./1.png", CV_LOAD_IMAGE_GRAYSCALE);

     cv::Mat out_img,des;
     vector<cv::KeyPoint> pts;

    Ptr<xfeatures2d::SIFT> sift=cv::xfeatures2d::SIFT::create();
     sift->detectAndCompute(img,cv::noArray(),pts,des);
     //检测到的特征为pts,同时计算描述子为des
     // sift->detect(img,pts);//只进行检测特征
 /*
     Ptr<xfeatures2d::SURF> surf=cv::xfeatures2d::SURF::create();
     surf->detectAndCompute(img,cv::noArray(),pts,des);
     // surf->detect(img,pts);
 */
     cv::drawKeypoints(img,pts,out_img);

     cv::imshow("Image", out_img);
     //cv::imwrite("sift.png",out_img);
     cv::waitKey(0);

     return 0;
 }

SIFT的create函数默认参数共5个,为int nfeatures = 0,int nOctaveLayers = 3,double contrastThreshold = 0.04,double edgeThreshold = 10,double sigma = 1.6

其中nfeatures为保留的特征数(根据分数排序后),0表示保留所有检测到的特征,也可以sift=cv::xfeatures2d::SIFT::create(100);保留分数最高的100个特征点。其余

参数以及介绍见https://docs.opencv.org/3.4.10/d5/d3c/classcv_1_1xfeatures2d_1_1SIFT.html

SURF的create函数默认参数也是5个,为double hessianThreshold=100, int nOctaves=4, int nOctaveLayers=3, bool extended=false, bool upright=false。

emm...并没有给现成的参数控制特征点数量,其他内容详见 https://docs.opencv.org/3.4.10/d5/df7/classcv_1_1xfeatures2d_1_1SURF.html

png图片:

opencv3 C++ SIFT,SURF特征检测函数用法

检测结果:SIFT和SURF

opencv3 C++ SIFT,SURF特征检测函数用法 opencv3 C++ SIFT,SURF特征检测函数用法
原文链接: https://www.cnblogs.com/pine-apple/p/14407231.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/208219

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月12日 下午11:16
下一篇 2023年2月12日 下午11:17

相关推荐