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.

此结构的文档由以下文件生成