您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關C++ OpenCV特征提取之如何實現HOG特征提取的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
前言
方向梯度直方圖(Histogram of Oriented Gradient, HOG)特征是一種在計算機視覺和圖像處理中用來進行物體檢測的特征描述子。它通過計算和統計圖像局部區域的梯度方向直方圖來構成特征。Hog特征結合SVM分類器已經被廣泛應用于圖像識別中,尤其在行人檢測中獲得了極大的成功。需要提醒的是,HOG+SVM進行行人檢測的方法是法國研究人員Dalal在2005的CVPR上提出的,而如今雖然有很多行人檢測算法不斷提出,但基本都是以HOG+SVM的思路為主。
HOG特征描述子提取
灰度圖像轉換
梯度計算
分網格的梯度方向直方圖
塊描述子
塊描述子歸一化
特征數據與檢測窗口
匹配方法
函數API
C++: gpu::HOGDescriptor::HOGDescriptor(
Size win_size=Size(64, 128), --檢測窗口大小
Size block_size=Size(16, 16), --在像素塊大小
Size block_stride=Size(8, 8), --塊步幅
Size cell_size=Size(8, 8), --Cell大小
int nbins=9, --9個直方圖
double win_sigma=DEFAULT_WIN_SIGMA,
double threshold_L2hys=0.2,
bool gamma_correction=true,
int nlevels=DEFAULT_NLEVELS
)
代碼演示
我們再新建一個項目名為opencv--Hog,按照配置屬性(VS2017配置OpenCV通用屬性),然后在源文件寫入#include和main方法
根據上面的描述我們寫入下面的代碼
然后我們運行看一下效果
可以看到輸出的的值,說明我們也檢測到的人物。
行人檢測
OpenCV中自己帶的訓練模版里面有行人檢測,我們可以直接調用了。
首先我們在度娘那找了一張行人的圖片
然后把開始加載的圖片換成上面這張,然后再把下面的代碼我們先屏蔽掉
然后我們重新寫
上面就是檢測到行人后再把他用紅色矩形畫出來,下面我們來看一下運行效果
可以看到上面檢測的沒有問題,把兩個人都檢測出來了。
感謝各位的閱讀!關于“C++ OpenCV特征提取之如何實現HOG特征提取”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。