OpenCV 基於HOG特徵的行人檢測

2021-06-23 05:27:19 字數 3042 閱讀 7027

opencv中提供了hog的行人檢測(pedestrain detection)類。

cv::hogdescriptor類的建構函式的各引數的定義:

[cpp]view plain

copy

cv_wrap hogdescriptor() :   

winsize(64,128),                             // detect window 

blocksize(16,16),                            // block 大小 

blockstride(8,8),                            // overlap block的滑動步長 

cellsize(8,8),                               // cell 大小  

nbins(9),                                    // 直方圖的bin個數 

derivaperture(1),                            // 微分運算元核 

winsigma(-1),                                // 在window上進行高斯加權 

histogramnormtype(hogdescriptor::l2hys),     // 直方圖歸一化型別 

l2hysthreshold(0.2),                         // l2-norm followed by clipping (limiting the maximum values of v to 0.2) and renormalising

gammacorrection(true

),                       

// gamma校正,去除光照影響

nlevels(hogdescriptor::default_nlevels)      // 分層數

下面的兩段**採用opencv中的hog行人檢測類來完成對靜態中的行人檢測。

1)採用64*128 (畫素為單位)的detect window

[cpp]view plain

copy

//  基於hog特徵的行人檢測  

//  author:www.icvpr.com

//  blog:    

#include 

#include 

intmain(

intargc, 

char

** argv)  

// 1. 定義hog物件

cv::hogdescriptor hog; // 採用預設引數

// 2. 設定svm分類器

hog.setsvmdetector(cv::hogdescriptor::getdefaultpeopledetector());   // 採用已經訓練好的行人檢測分類器

// 3. 在測試影象上檢測行人區域

std::vectorregions;  

hog.detectmultiscale(image, regions, 0, cv::size(8,8), cv::size(32,32), 1.05, 1);  

// 顯示

for(

size_t

i = 0; i 

cv::imshow("hog"

, image);  

cv::waitkey(0);  

return

0;  

}  

行人檢測實驗結果:

2)採用48*96(畫素為單位)的detect window

[cpp]view plain

copy

//  基於hog特徵的行人檢測    

//  author:     

#include 

#include 

intmain(

intargc, 

char

** argv)    

// 1. 定義hog物件  

cv::hogdescriptor hog(cv::size(48, 96), cv::size(16, 16), cv::size(8, 8), cv::size(8, 8), 9, 1,-1, cv::hogdescriptor::l2hys, 0.2, true

, cv::hogdescriptor::default_nlevels);   

// 2. 設定svm分類器  

hog.setsvmdetector(cv::hogdescriptor::getdaimlerpeopledetector());   // 採用已經訓練好的行人檢測分類器  

// 3. 在測試影象上檢測行人區域  

std::vectorregions;    

hog.detectmultiscale(image, regions, 0, cv::size(8,8), cv::size(32,32), 1.05, 1);    

// 顯示  

for(

size_t

i = 0; i 

cv::imshow("hog"

, image);    

cv::waitkey(0);    

return

0;    

}    

行人檢測實驗結果:

opencv_基於hog特徵的行人檢測

基於Hog特徵的行人檢測

1 先建立相應的txt檔案 f pedestrian image 00000101 0.png f pedestrian image 00000105 0.png f pedestrian image 00000108 0.png f pedestrian image 00000110 0.png ...

HOG 特徵的提取 基於scikit image

2017年04月12日 16 40 04 hog 特徵,histogram of oriented gradient,梯度方向直方圖特徵,作為提取基於梯度的特徵,hog 採用了統計的方式 直方圖 進行提取.其基本思路是將影象區域性的梯度統計特徵拼接起來作為總特徵.區域性特徵在這裡指的是將影象劃分為多...

Opencv2 4學習 HOG特徵

一 什麼是hog特徵 二 如何提取hog特徵 三 視窗 win 塊 block 細胞 cell 與畫素的關係 四 特徵向量維度數目的計算 五 關於梯度直方圖的計算 重點 1 影象卷積 影象梯度一般利用影象與梯度運算元卷積實現,關於這部分內容,可以參考opencv2.4學習 影象卷積 2 梯度運算元 ...