OpenCV 4.12.0
開源計算機視覺
載入中...
搜尋中...
無匹配項

HOG(定向梯度直方圖)描述符和物件檢測器的實現。更多...

#include <opencv2/objdetect.hpp>

cv::HOGDescriptor 協作圖

公共型別

列舉  { DEFAULT_NLEVELS = 64 }
 
列舉  描述符儲存格式 {
  按列描述符格式 ,
  按行描述符格式
}
 
列舉  直方圖歸一化型別 { L2Hys = 0 }
 

公共成員函式

 HOGDescriptor ()
 使用預設引數建立 HOG 描述符和檢測器。
 
 HOGDescriptor (const HOGDescriptor &d)
 
 HOGDescriptor (const String &filename)
 
 HOGDescriptor (Size _winSize, Size _blockSize, Size _blockStride, Size _cellSize, int _nbins, int _derivAperture=1, double _winSigma=-1, HOGDescriptor::HistogramNormType _histogramNormType=HOGDescriptor::L2Hys, double _L2HysThreshold=0.2, bool _gammaCorrection=false, int _nlevels=HOGDescriptor::DEFAULT_NLEVELS, bool _signedGradient=false)
 
virtual ~HOGDescriptor ()
 預設解構函式。
 
bool checkDetectorSize () const
 檢查檢測器大小是否等於描述符大小。
 
virtual void compute (InputArray img, std::vector< float > &descriptors, Size winStride=Size(), Size padding=Size(), const std::vector< Point > &locations=std::vector< Point >()) const
 計算給定影像的 HOG 描述符。
 
virtual void computeGradient (InputArray img, InputOutputArray grad, InputOutputArray angleOfs, Size paddingTL=Size(), Size paddingBR=Size()) const
 計算梯度和量化梯度方向。
 
virtual void copyTo (HOGDescriptor &c) const
 克隆 HOGDescriptor
 
virtual void detect (InputArray img, std::vector< Point > &foundLocations, double hitThreshold=0, Size winStride=Size(), Size padding=Size(), const std::vector< Point > &searchLocations=std::vector< Point >()) const
 執行無多尺度視窗的物件檢測。
 
virtual void detect (InputArray img, std::vector< Point > &foundLocations, std::vector< double > &weights, double hitThreshold=0, Size winStride=Size(), Size padding=Size(), const std::vector< Point > &searchLocations=std::vector< Point >()) const
 執行無多尺度視窗的物件檢測。
 
virtual void detectMultiScale (InputArray img, std::vector< Rect > &foundLocations, double hitThreshold=0, Size winStride=Size(), Size padding=Size(), double scale=1.05, double groupThreshold=2.0, bool useMeanshiftGrouping=false) const
 檢測輸入影像中不同大小的物件。檢測到的物件以矩形列表的形式返回。
 
virtual void detectMultiScale (InputArray img, std::vector< Rect > &foundLocations, std::vector< double > &foundWeights, double hitThreshold=0, Size winStride=Size(), Size padding=Size(), double scale=1.05, double groupThreshold=2.0, bool useMeanshiftGrouping=false) const
 檢測輸入影像中不同大小的物件。檢測到的物件以矩形列表的形式返回。
 
virtual void detectMultiScaleROI (InputArray img, std::vector< cv::Rect > &foundLocations, std::vector< DetectionROI > &locations, double hitThreshold=0, int groupThreshold=0) const
 評估指定的 ROI,併為多個尺度中的每個位置返回置信度值。
 
virtual void detectROI (InputArray img, const std::vector< cv::Point > &locations, std::vector< cv::Point > &foundLocations, std::vector< double > &confidences, double hitThreshold=0, cv::Size winStride=Size(), cv::Size padding=Size()) const
 評估指定的 ROI,併為每個位置返回置信度值。
 
size_t getDescriptorSize () const
 返回分類所需的係數數量。
 
double getWinSigma () const
 返回 winSigma 值。
 
void groupRectangles (std::vector< cv::Rect > &rectList, std::vector< double > &weights, int groupThreshold, double eps) const
 對物件候選矩形進行分組。
 
virtual bool load (const String &filename, const String &objname=String())
 從檔案中載入 HOGDescriptor 引數和線性 SVM 分類器的係數
 
virtual bool read (FileNode &fn)
 從檔案節點讀取 HOGDescriptor 引數和線性 SVM 分類器的係數。
 
virtual void save (const String &filename, const String &objname=String()) const
 HOGDescriptor 引數和線性 SVM 分類器的係數儲存到檔案中
 
virtual void setSVMDetector (InputArray svmdetector)
 設定線性 SVM 分類器的係數。
 
virtual void write (FileStorage &fs, const String &objname) const
 HOGDescriptor 引數和線性 SVM 分類器的係數儲存到檔案儲存中。
 

靜態公共成員函式

static std::vector< float > getDaimlerPeopleDetector ()
 返回用於行人檢測(48x96 視窗)訓練的分類器係數。
 
static std::vector< float > getDefaultPeopleDetector ()
 返回用於行人檢測(64x128 視窗)訓練的分類器係數。
 

公共屬性

Size blockSize
 畫素塊大小。與單元格大小對齊。預設值為 Size(16,16)
 
Size blockStride
 塊步幅。它必須是單元格大小的倍數。預設值為 Size(8,8)
 
Size cellSize
 單元格大小。預設值為 Size(8,8)
 
int derivAperture
 未註明
 
float free_coef
 未註明
 
bool gammaCorrection
 指定是否需要伽馬校正預處理的標誌。
 
HOGDescriptor::HistogramNormType histogramNormType
 histogramNormType
 
double L2HysThreshold
 L2-Hys 歸一化方法收縮。
 
int nbins
 用於計算梯度直方圖的 bin 數量。預設值為 9。
 
int nlevels
 檢測視窗增加的最大數量。預設值為 64。
 
UMat oclSvmDetector
 啟用 OpenCL 時使用的線性 SVM 分類器係數
 
bool signedGradient
 指示是否使用有符號梯度。
 
std::vector< float > svmDetector
 線性 SVM 分類器係數。
 
double winSigma
 高斯平滑視窗引數。
 
Size winSize
 檢測視窗大小。與塊大小和塊步幅對齊。預設值為 Size(64,128)
 

詳細描述

成員列舉文件

◆ 匿名列舉

匿名列舉
列舉器
DEFAULT_NLEVELS 

預設 nlevels 值。

◆ DescriptorStorageFormat

列舉器
DESCR_FORMAT_COL_BY_COL 
DESCR_FORMAT_ROW_BY_ROW 

◆ HistogramNormType

列舉器
L2Hys 

預設 histogramNormType。

建構函式 & 解構函式文件

◆ HOGDescriptor() [1/4]

cv::HOGDescriptor::HOGDescriptor ( )
inline

使用預設引數建立 HOG 描述符和檢測器。

等同於 HOGDescriptor(Size(64,128), Size(16,16), Size(8,8), Size(8,8), 9 )

◆ HOGDescriptor() [2/4]

cv::HOGDescriptor::HOGDescriptor ( Size _winSize,
Size _blockSize,
Size _blockStride,
Size _cellSize,
int _nbins,
int _derivAperture = 1,
double _winSigma = -1,
HOGDescriptor::HistogramNormType _histogramNormType = HOGDescriptor::L2Hys,
double _L2HysThreshold = 0.2,
bool _gammaCorrection = false,
int _nlevels = HOGDescriptor::DEFAULT_NLEVELS,
bool _signedGradient = false )
inline

這是一個過載成員函式,為方便起見而提供。它與上述函式的區別僅在於其接受的引數。

引數
_winSize設定 winSize 為給定值。
_blockSize設定 blockSize 為給定值。
_blockStride設定 blockStride 為給定值。
_cellSize設定 cellSize 為給定值。
_nbins設定 nbins 為給定值。
_derivAperture設定 derivAperture 為給定值。
_winSigma設定 winSigma 為給定值。
_histogramNormType設定 histogramNormType 為給定值。
_L2HysThreshold設定 L2HysThreshold 為給定值。
_gammaCorrection設定 gammaCorrection 為給定值。
_nlevels設定 nlevels 為給定值。
_signedGradient設定 signedGradient 為給定值。

◆ HOGDescriptor() [3/4]

cv::HOGDescriptor::HOGDescriptor ( const String & filename)
inline

這是一個過載成員函式,為方便起見而提供。它與上述函式的區別僅在於其接受的引數。

建立 HOG 描述符和檢測器,並從檔案中載入 HOGDescriptor 引數和線性 SVM 分類器的係數。

引數
filename包含 HOGDescriptor 屬性和線性 SVM 分類器係數的檔名。

◆ HOGDescriptor() [4/4]

cv::HOGDescriptor::HOGDescriptor ( const HOGDescriptor & d)
inline

這是一個過載成員函式,為方便起見而提供。它與上述函式的區別僅在於其接受的引數。

引數
d用於克隆以建立新物件的 HOGDescriptor
此函式的呼叫圖如下

◆ ~HOGDescriptor()

virtual cv::HOGDescriptor::~HOGDescriptor ( )
inlinevirtual

預設解構函式。

成員函式文件

◆ checkDetectorSize()

bool cv::HOGDescriptor::checkDetectorSize ( ) const

檢查檢測器大小是否等於描述符大小。

◆ compute()

virtual void cv::HOGDescriptor::compute ( InputArray img,
std::vector< float > & descriptors,
Size winStride = Size(),
Size padding = Size(),
const std::vector< Point > & locations = std::vector< Point >() ) const
virtual

計算給定影像的 HOG 描述符。

引數
imgCV_8U 型別的矩陣,包含將計算 HOG 特徵的影像。
descriptorsCV_32F 型別的矩陣
winStride視窗步長。它必須是塊步長的倍數。
padding填充
locations點向量
示例
samples/cpp/train_HOG.cpp.

◆ computeGradient()

virtual void cv::HOGDescriptor::computeGradient ( InputArray img,
InputOutputArray grad,
InputOutputArray angleOfs,
Size paddingTL = Size(),
Size paddingBR = Size() ) const
virtual

計算梯度和量化梯度方向。

引數
img矩陣包含要計算的影像
gradCV_32FC2 型別的矩陣,包含計算出的梯度
angleOfsCV_8UC2 型別的矩陣,包含量化梯度方向
paddingTL左上角填充
paddingBR右下角填充

◆ copyTo()

virtual void cv::HOGDescriptor::copyTo ( HOGDescriptor & c) const
virtual

克隆 HOGDescriptor

引數
c克隆的 HOGDescriptor

◆ detect() [1/2]

virtual void cv::HOGDescriptor::detect ( InputArray img,
std::vector< Point > & foundLocations,
double hitThreshold = 0,
Size winStride = Size(),
Size padding = Size(),
const std::vector< Point > & searchLocations = std::vector< Point >() ) const
virtual

執行無多尺度視窗的物件檢測。

引數
imgCV_8U 或 CV_8UC3 型別的矩陣,包含檢測到物件的影像。
foundLocations點向量,其中每個點包含檢測到的物件邊界的左上角點。
hitThreshold特徵與 SVM 分類平面之間距離的閾值。通常為 0,應在檢測器係數中指定(作為最後一個自由係數)。但如果省略自由係數(允許),您可以在此處手動指定。
winStride視窗步長。它必須是塊步長的倍數。
padding填充
searchLocations包含要搜尋的位置的點向量。

◆ detect() [2/2]

virtual void cv::HOGDescriptor::detect ( InputArray img,
std::vector< Point > & foundLocations,
std::vector< double > & weights,
double hitThreshold = 0,
Size winStride = Size(),
Size padding = Size(),
const std::vector< Point > & searchLocations = std::vector< Point >() ) const
virtual

執行無多尺度視窗的物件檢測。

引數
imgCV_8U 或 CV_8UC3 型別的矩陣,包含檢測到物件的影像。
foundLocations點向量,其中每個點包含檢測到的物件邊界的左上角點。
weights將包含每個檢測到的物件的置信度值的向量。
hitThreshold特徵與 SVM 分類平面之間距離的閾值。通常為 0,應在檢測器係數中指定(作為最後一個自由係數)。但如果省略自由係數(允許),您可以在此處手動指定。
winStride視窗步長。它必須是塊步長的倍數。
padding填充
searchLocations點向量,包含要評估的請求位置集。

◆ detectMultiScale() [1/2]

virtual void cv::HOGDescriptor::detectMultiScale ( InputArray img,
std::vector< Rect > & foundLocations,
double hitThreshold = 0,
Size winStride = Size(),
Size padding = Size(),
double scale = 1.05,
double groupThreshold = 2.0,
bool useMeanshiftGrouping = false ) const
virtual

檢測輸入影像中不同大小的物件。檢測到的物件以矩形列表的形式返回。

引數
imgCV_8U 或 CV_8UC3 型別的矩陣,包含檢測到物件的影像。
foundLocations矩形向量,每個矩形包含檢測到的物件。
hitThreshold特徵與 SVM 分類平面之間距離的閾值。通常為 0,應在檢測器係數中指定(作為最後一個自由係數)。但如果省略自由係數(允許),您可以在此處手動指定。
winStride視窗步長。它必須是塊步長的倍數。
padding填充
scale檢測視窗增加的係數。
groupThreshold調節相似度閾值的係數。檢測到時,某些物件可能被許多矩形覆蓋。0 表示不執行分組。
useMeanshiftGrouping指示分組演算法

◆ detectMultiScale() [2/2]

virtual void cv::HOGDescriptor::detectMultiScale ( InputArray img,
std::vector< Rect > & foundLocations,
std::vector< double > & foundWeights,
double hitThreshold = 0,
Size winStride = Size(),
Size padding = Size(),
double scale = 1.05,
double groupThreshold = 2.0,
bool useMeanshiftGrouping = false ) const
virtual

檢測輸入影像中不同大小的物件。檢測到的物件以矩形列表的形式返回。

引數
imgCV_8U 或 CV_8UC3 型別的矩陣,包含檢測到物件的影像。
foundLocations矩形向量,每個矩形包含檢測到的物件。
foundWeights將包含每個檢測到的物件的置信度值的向量。
hitThreshold特徵與 SVM 分類平面之間距離的閾值。通常為 0,應在檢測器係數中指定(作為最後一個自由係數)。但如果省略自由係數(允許),您可以在此處手動指定。
winStride視窗步長。它必須是塊步長的倍數。
padding填充
scale檢測視窗增加的係數。
groupThreshold調節相似度閾值的係數。檢測到時,某些物件可能被許多矩形覆蓋。0 表示不執行分組。
useMeanshiftGrouping指示分組演算法
示例
samples/cpp/peopledetect.cppsamples/cpp/train_HOG.cpp

◆ detectMultiScaleROI()

virtual void cv::HOGDescriptor::detectMultiScaleROI ( InputArray img,
std::vector< cv::Rect > & foundLocations,
std::vector< DetectionROI > & locations,
double hitThreshold = 0,
int groupThreshold = 0 ) const
virtual

評估指定的 ROI,併為多個尺度中的每個位置返回置信度值。

引數
imgCV_8U 或 CV_8UC3 型別的矩陣,包含檢測到物件的影像。
foundLocations矩形向量,每個矩形包含檢測到的物件。
locationsDetectionROI 的向量
hitThreshold特徵與 SVM 分類平面之間距離的閾值。通常為 0,應在檢測器係數中指定(作為最後一個自由係數)。但如果省略自由係數(允許),您可以在此處手動指定。
groupThreshold矩形最小可能數量減 1。該閾值用於矩形組以保留它。

◆ detectROI()

virtual void cv::HOGDescriptor::detectROI ( InputArray img,
const std::vector< cv::Point > & locations,
std::vector< cv::Point > & foundLocations,
std::vector< double > & confidences,
double hitThreshold = 0,
cv::Size winStride = Size(),
cv::Size padding = Size() ) const
virtual

評估指定的 ROI,併為每個位置返回置信度值。

引數
imgCV_8U 或 CV_8UC3 型別的矩陣,包含檢測到物件的影像。
locations點向量
foundLocations點向量,其中每個點是檢測到的物件的左上角點。
confidencesconfidences
hitThreshold特徵與 SVM 分類平面之間距離的閾值。通常為 0,應在檢測器係數中指定(作為最後一個自由係數)。但如果省略自由係數(允許),您可以在此處手動指定
winStridewinStride
paddingpadding

◆ getDaimlerPeopleDetector()

static std::vector< float > cv::HOGDescriptor::getDaimlerPeopleDetector ( )
static

返回用於行人檢測(48x96 視窗)訓練的分類器係數。

◆ getDefaultPeopleDetector()

static std::vector< float > cv::HOGDescriptor::getDefaultPeopleDetector ( )
static

返回用於行人檢測(64x128 視窗)訓練的分類器係數。

◆ getDescriptorSize()

size_t cv::HOGDescriptor::getDescriptorSize ( ) const

返回分類所需的係數數量。

◆ getWinSigma()

double cv::HOGDescriptor::getWinSigma ( ) const

返回 winSigma 值。

◆ groupRectangles()

void cv::HOGDescriptor::groupRectangles ( std::vector< cv::Rect > & rectList,
std::vector< double > & weights,
int groupThreshold,
double eps ) const

對物件候選矩形進行分組。

引數
rectList輸入/輸出矩形向量。輸出向量包含保留和分組的矩形。(Python 列表不會就地修改。)
weights輸入/輸出矩形權重向量。輸出向量包含保留和分組的矩形權重。(Python 列表不會就地修改。)
groupThreshold矩形最小可能數量減 1。該閾值用於矩形組以保留它。
eps合併矩形組時矩形邊之間的相對差異。

◆ load()

virtual bool cv::HOGDescriptor::load ( const String & filename,
const String & objname = String() )
virtual

從檔案中載入 HOGDescriptor 引數和線性 SVM 分類器的係數

引數
filename要讀取的檔名。
objname要讀取的節點的可選名稱(如果為空,將使用第一個頂級節點)。
示例
samples/cpp/train_HOG.cpp.

◆ read()

virtual bool cv::HOGDescriptor::read ( FileNode & fn)
virtual

從檔案節點讀取 HOGDescriptor 引數和線性 SVM 分類器的係數。

引數
fn檔案節點

◆ save()

virtual void cv::HOGDescriptor::save ( const String & filename,
const String & objname = String() ) const
virtual

HOGDescriptor 引數和線性 SVM 分類器的係數儲存到檔案中

引數
filename檔名
objname物件名稱
示例
samples/cpp/train_HOG.cpp.

◆ setSVMDetector()

virtual void cv::HOGDescriptor::setSVMDetector ( InputArray svmdetector)
virtual

設定線性 SVM 分類器的係數。

引數
svmdetector線性 SVM 分類器係數。
示例
samples/cpp/peopledetect.cppsamples/cpp/train_HOG.cpp

◆ write()

virtual void cv::HOGDescriptor::write ( FileStorage & fs,
const String & objname ) const
virtual

HOGDescriptor 引數和線性 SVM 分類器的係數儲存到檔案儲存中。

引數
fs檔案儲存
objname物件名稱

成員資料文件

◆ blockSize

Size cv::HOGDescriptor::blockSize

畫素塊大小。與單元格大小對齊。預設值為 Size(16,16)

◆ blockStride

Size cv::HOGDescriptor::blockStride

塊步幅。它必須是單元格大小的倍數。預設值為 Size(8,8)

◆ cellSize

Size cv::HOGDescriptor::cellSize

單元格大小。預設值為 Size(8,8)

◆ derivAperture

int cv::HOGDescriptor::derivAperture

未註明

◆ free_coef

float cv::HOGDescriptor::free_coef

未註明

◆ gammaCorrection

bool cv::HOGDescriptor::gammaCorrection

指定是否需要伽馬校正預處理的標誌。

◆ histogramNormType

HOGDescriptor::HistogramNormType cv::HOGDescriptor::histogramNormType

histogramNormType

◆ L2HysThreshold

double cv::HOGDescriptor::L2HysThreshold

L2-Hys 歸一化方法收縮。

◆ nbins

int cv::HOGDescriptor::nbins

用於計算梯度直方圖的 bin 數量。預設值為 9。

◆ nlevels

int cv::HOGDescriptor::nlevels

檢測視窗增加的最大數量。預設值為 64。

◆ oclSvmDetector

UMat cv::HOGDescriptor::oclSvmDetector

啟用 OpenCL 時使用的線性 SVM 分類器係數

◆ signedGradient

bool cv::HOGDescriptor::signedGradient

指示是否使用有符號梯度。

◆ svmDetector

std::vector<float> cv::HOGDescriptor::svmDetector

線性 SVM 分類器係數。

◆ winSigma

double cv::HOGDescriptor::winSigma

高斯平滑視窗引數。

◆ winSize

Size cv::HOGDescriptor::winSize

檢測視窗大小。與塊大小和塊步幅對齊。預設值為 Size(64,128)

示例
samples/cpp/train_HOG.cpp.

此結構的文件由以下檔案生成