天天看點

opencv surf特征點檢測(一),基本使用,cv::KeyPoint 屬性分析,surf屬性分析本章内容:

本章内容:

1. surf特征點檢測

2. cv::KeyPoint 屬性分析

3.surf屬性分析

1. surf特征點檢測

opencv surf特征點檢測(一),基本使用,cv::KeyPoint 屬性分析,surf屬性分析本章内容:

輸出結果

opencv surf特征點檢測(一),基本使用,cv::KeyPoint 屬性分析,surf屬性分析本章内容:

2. cv::KeyPoint 屬性分析

opencv surf特征點檢測(一),基本使用,cv::KeyPoint 屬性分析,surf屬性分析本章内容:

輸出結果:

opencv surf特征點檢測(一),基本使用,cv::KeyPoint 屬性分析,surf屬性分析本章内容:

3.surf屬性分析

opencv surf特征點檢測(一),基本使用,cv::KeyPoint 屬性分析,surf屬性分析本章内容:

輸出結果

opencv surf特征點檢測(一),基本使用,cv::KeyPoint 屬性分析,surf屬性分析本章内容:

源碼

#include <ostream>

#include <opencv.hpp>

#include<opencv2/opencv.hpp>

#include "opencv2/xfeatures2d.hpp"

int main(int argc, char *argv[])

{

    cv::String fileName = "/home/wang/dev/Image/heihei.jpeg";

    cv::Mat src = cv::imread(fileName);

    if(src.data == NULL){

        printf("圖像讀入失敗\n");

        return -1;

    }

    cv::imshow("src",src);

    cv::Ptr<cv::xfeatures2d::SURF> surf= cv::xfeatures2d::SURF::create();

    std::vector<cv::KeyPoint> KeyPs;

    surf->detect(src,KeyPs);

    cv::Mat dst;

    cv::drawKeypoints(src,KeyPs,dst);

    cv::imshow("dst",dst);

    // 列印輸出結果

    std::cout << "KeyPs.size():= " << KeyPs.size() << std::endl;

    std::cout << "KeyPs[0].pt:= " << KeyPs[0].pt << std::endl;

    std::cout << "KeyPs[0].size:= " << KeyPs[0].size << std::endl;

    std::cout << "KeyPs[0].angle:= " << KeyPs[0].angle << std::endl;

    std::cout << "KeyPs[0].octave:= " << KeyPs[0].octave << std::endl;

    std::cout << "KeyPs[0].class_id:= " << KeyPs[0].class_id << std::endl;

    std::cout << "預設 hessianThreshold= " << surf->getHessianThreshold() << std::endl;

    surf->setHessianThreshold(50);

    std::cout << "設定後 hessianThreshold= " << surf->getHessianThreshold() << std::endl;

    std::cout << "預設 nOctaves= " << surf->getNOctaves() << std::endl;

    surf->setNOctaves(5);

    std::cout << "設定後 nOctaves= " << surf->getNOctaves() << std::endl;

    std::cout << "預設 nOctaveLayers= " << surf->getNOctaveLayers() << std::endl;

    surf->setNOctaveLayers(5);

    std::cout << "設定後 nOctaveLayers= " << surf->getNOctaveLayers() << std::endl;

    std::cout << "預設 extended= " << surf->getExtended() << std::endl;

    surf->setExtended(1);

    std::cout << "設定後 extended= " << surf->getExtended() << std::endl;

    std::cout << "預設 upright= " << surf->getUpright() << std::endl;

    surf->setUpright(1);

    std::cout << "設定後 upright= " << surf->getUpright() << std::endl;

    cv::waitKey(0);

    return 1;

}

繼續閱讀