溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++ OpenCV特征提取之如何實現(xiàn)HOG特征提取

發(fā)布時間:2021-11-26 10:46:55 來源:億速云 閱讀:595 作者:小新 欄目:大數(shù)據

這篇文章給大家分享的是有關C++ OpenCV特征提取之如何實現(xiàn)HOG特征提取的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

前言

方向梯度直方圖(Histogram of Oriented Gradient, HOG)特征是一種在計算機視覺和圖像處理中用來進行物體檢測的特征描述子。它通過計算和統(tǒng)計圖像局部區(qū)域的梯度方向直方圖來構成特征。Hog特征結合SVM分類器已經被廣泛應用于圖像識別中,尤其在行人檢測中獲得了極大的成功。需要提醒的是,HOG+SVM進行行人檢測的方法是法國研究人員Dalal在2005的CVPR上提出的,而如今雖然有很多行人檢測算法不斷提出,但基本都是以HOG+SVM的思路為主。

HOG特征描述子提取

  • 灰度圖像轉換

  • 梯度計算

  • 分網格的梯度方向直方圖

  • 塊描述子

  • 塊描述子歸一化

  • 特征數(shù)據與檢測窗口

  • 匹配方法

函數(shù)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方法

C++ OpenCV特征提取之如何實現(xiàn)HOG特征提取

根據上面的描述我們寫入下面的代碼

C++ OpenCV特征提取之如何實現(xiàn)HOG特征提取

然后我們運行看一下效果

C++ OpenCV特征提取之如何實現(xiàn)HOG特征提取

可以看到輸出的的值,說明我們也檢測到的人物。


行人檢測

OpenCV中自己帶的訓練模版里面有行人檢測,我們可以直接調用了。

首先我們在度娘那找了一張行人的圖片

C++ OpenCV特征提取之如何實現(xiàn)HOG特征提取

然后把開始加載的圖片換成上面這張,然后再把下面的代碼我們先屏蔽掉

C++ OpenCV特征提取之如何實現(xiàn)HOG特征提取

然后我們重新寫

C++ OpenCV特征提取之如何實現(xiàn)HOG特征提取

上面就是檢測到行人后再把他用紅色矩形畫出來,下面我們來看一下運行效果

C++ OpenCV特征提取之如何實現(xiàn)HOG特征提取

可以看到上面檢測的沒有問題,把兩個人都檢測出來了。

感謝各位的閱讀!關于“C++ OpenCV特征提取之如何實現(xiàn)HOG特征提取”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI