OpenCV 4.11.0
开源计算机视觉
加载中…
搜索中…
未找到匹配项

HOG(定向梯度直方图)描述符和目标检测器的实现。更多…

#include <opencv2/objdetect.hpp>

cv::HOGDescriptor 的协作图

公共类型

枚举 { DEFAULT_NLEVELS = 64 }
 
枚举 DescriptorStorageFormat {
  DESCR_FORMAT_COL_BY_COL ,
  DESCR_FORMAT_ROW_BY_ROW
}
 
枚举 HistogramNormType { 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)
 
虚函数 ~HOGDescriptor ()
 默认析构函数。
 
bool checkDetectorSize () const
 检查检测器大小是否等于描述符大小。
 
虚函数 void compute (InputArray img, std::vector< float > &descriptors, Size winStride=Size(), Size padding=Size(), const std::vector< Point > &locations=std::vector< Point >()) const
 计算给定图像的 HOG 描述符。
 
虚函数 void computeGradient (InputArray img, InputOutputArray grad, InputOutputArray angleOfs, Size paddingTL=Size(), Size paddingBR=Size()) const
 计算梯度和量化的梯度方向。
 
虚函数 void copyTo (HOGDescriptor &c) const
 克隆 HOGDescriptor
 
虚函数 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
 执行无多尺度窗口的目标检测。
 
虚函数 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
 执行无多尺度窗口的目标检测。
 
虚函数 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
 检测输入图像中不同大小的目标。检测到的目标作为矩形列表返回。
 
虚函数 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
 检测输入图像中不同大小的目标。检测到的目标作为矩形列表返回。
 
虚函数 void detectMultiScaleROI (InputArray img, std::vector< cv::Rect > &foundLocations, std::vector< DetectionROI > &locations, double hitThreshold=0, int groupThreshold=0) const
 评估指定的 ROI,并返回多尺度下每个位置的置信度值。
 
虚函数 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 分类器的系数。
 
虚函数 void save (const String &filename, const String &objname=String()) const
 HOGDescriptor 参数和线性 SVM 分类器的系数保存到文件中
 
虚函数 void setSVMDetector (InputArray svmdetector)
 设置线性 SVM 分类器的系数。
 
虚函数 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用于克隆创建新 HOGDescriptorHOGDescriptor
此函数的调用图如下所示

◆ ~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 描述符。

参数
img包含图像的矩阵,类型为 CV_8U,将在其中计算 HOG 特征。
descriptors类型为 CV_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包含要计算图像的矩阵
grad类型为 CV_32FC2 的矩阵,包含计算的梯度
angleOfs类型为 CV_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

执行无多尺度窗口的目标检测。

参数
img包含图像的矩阵,类型为 CV_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

执行无多尺度窗口的目标检测。

参数
img包含图像的矩阵,类型为 CV_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

检测输入图像中不同大小的目标。检测到的目标作为矩形列表返回。

参数
img包含图像的矩阵,类型为 CV_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

检测输入图像中不同大小的目标。检测到的目标作为矩形列表返回。

参数
img包含图像的矩阵,类型为 CV_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,并返回多尺度下每个位置的置信度值。

参数
img包含图像的矩阵,类型为 CV_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 > & 置信度,
double hitThreshold = 0,
cv::Size winStride = Size(),
cv::Size padding = Size() ) const
virtual

评估指定的 ROI 并返回每个位置的置信度值

参数
img包含图像的矩阵,类型为 CV_8U 或 CV_8UC3,在其中检测对象。
locations点向量
foundLocations点向量,每个点表示检测到的目标的左上角点。
置信度置信度
hitThreshold特征与SVM分类平面之间距离的阈值。通常为0,应在检测器系数中指定(作为最后一个自由系数)。但是,如果省略了自由系数(允许),则可以在这里手动指定。
winStridewinStride
paddingpadding

◆ getDaimlerPeopleDetector()

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

返回针对行人检测(对于 48x96 窗口)训练的分类器的系数。

◆ getDefaultPeopleDetector()

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

返回针对行人检测(对于 64x128 窗口)训练的分类器的系数。

◆ getDescriptorSize()

size_t cv::HOGDescriptor::getDescriptorSize ( ) const

返回分类所需的系数数量。

◆ getWinSigma()

double cv::HOGDescriptor::getWinSigma ( ) const

返回 winSigma 值。

◆ groupRectangles()

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

对目标候选矩形进行分组。

参数
矩形列表输入/输出矩形向量。输出向量包含保留和分组的矩形。(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 svm检测器)
virtual

设置线性 SVM 分类器的系数。

参数
svm检测器线性 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.

此结构体的文档是从以下文件生成的