這篇文章主要為大家展示了“C++ OpenCV特征提取之如何實現(xiàn)SURF特征檢測”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“C++ OpenCV特征提取之如何實現(xiàn)SURF特征檢測”這篇文章吧。
創(chuàng)新互聯(lián)是一家專注于網(wǎng)站設(shè)計、成都做網(wǎng)站和川西大數(shù)據(jù)中心的網(wǎng)絡(luò)公司,有著豐富的建站經(jīng)驗和案例。
SURF特征基本介紹
SURF(Speeded Up Robust Features)特征關(guān)鍵特性:
特征檢測
尺度空間
選擇不變性
特征向量
SURF算法工作原理
選擇圖像中的POI(Points of interest) Hessian Matrix
在不同的尺度空間發(fā)現(xiàn)關(guān)鍵點,非最大信號壓制
發(fā)現(xiàn)特征點方法、旋轉(zhuǎn)不變性要求
生成特征向量
SURF構(gòu)造函數(shù)介紹
C++: SURF::SURF(
double hessianThreshold, --閾值檢測器使用Hessian的關(guān)鍵點,默認(rèn)值在
300-500之間
int nOctaves=4, -- 4表示在四個尺度空間
int nOctaveLayers=2, -- 表示每個尺度的層數(shù)
bool extended=false,
bool upright=false --表示計算選擇不變性,不計算的速度更快
)
代碼演示
我們再新建一個項目名為opencv--surf,按照配置屬性(VS2017配置OpenCV通用屬性),然后在源文件寫入#include和main方法
上面紅框這里我們在讀取圖片的時候加上了一個參數(shù),IMREAD_GRAYSCALE,這樣我們現(xiàn)在讀取的圖片直接進來就是灰度圖了,不用再用cvtcolor進行轉(zhuǎn)換了。
開始進行SURF檢測
因為我們要用到cv::xfeatures2d::SURF這個類,所以首先要在頭文里要引用xfeatures2d.hpp的頭文件
上面我們定義的閾值為400,然后我們看一下運行的效果
然后我們把原來的minHessian參數(shù)值改為100試試
再看一下運行的效果
仔細(xì)對比一下,比原來定義的值400要多了一些關(guān)鍵點,這里就可以說明我們的閾值調(diào)的越高,顯示的出來的關(guān)鍵點就越少。
我們還可以再試試SURF的構(gòu)造函數(shù)里面加上不同的參數(shù)的改變看看效果
上面可以看到在SURF::create里面,把幾個默認(rèn)的參數(shù)都進行的賦值和修改,運行的效果為
以上是“C++ OpenCV特征提取之如何實現(xiàn)SURF特征檢測”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!