OpenCV 4.13.0
开源计算机视觉库 (Open Source Computer Vision)
正在加载...
正在搜索...
未找到匹配项

HOG(方向梯度直方图)描述符和对象检测器的实现。更多...

#include <opencv2/objdetect.hpp>

cv::HOGDescriptor 的协作图

公开类型

enum  { DEFAULT_NLEVELS = 64 }
 
enum  DescriptorStorageFormat {
  DESCR_FORMAT_COL_BY_COL ,
  DESCR_FORMAT_ROW_BY_ROW
}
 
enum  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)
 
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)
 

详细说明

成员枚举文档

◆ 匿名枚举

匿名枚举
枚举值 (Enumerator)
DEFAULT_NLEVELS 

默认 nlevels 值。

◆ DescriptorStorageFormat

枚举值 (Enumerator)
DESCR_FORMAT_COL_BY_COL 
DESCR_FORMAT_ROW_BY_ROW 

◆ HistogramNormType

枚举值 (Enumerator)
L2Hys 

默认 histogramNormType。

构造函数与析构函数说明

◆ HOGDescriptor() [1/4]

cv::HOGDescriptor::HOGDescriptor ( )
内联

创建具有默认参数的 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 )
内联

这是一个重载的成员函数,为方便起见而提供。它与上述函数的区别仅在于所接受的参数不同。

参数
_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)
内联

这是一个重载的成员函数,为方便起见而提供。它与上述函数的区别仅在于所接受的参数不同。

创建 HOG 描述符和检测器,并从文件中加载 HOGDescriptor 参数和线性 SVM 分类器的系数。

参数
filename包含 HOGDescriptor 属性和线性 SVM 分类器系数的文件名。

◆ HOGDescriptor() [4/4]

cv::HOGDescriptor::HOGDescriptor ( const HOGDescriptor & d)
内联

这是一个重载的成员函数,为方便起见而提供。它与上述函数的区别仅在于所接受的参数不同。

参数
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 描述符。

参数
img包含将计算 HOG 特征的图像的 CV_8U 类型矩阵。
descriptorsCV_32F 类型矩阵
winStride窗口步长。它必须是块步长的倍数。
padding填充
locationsPoint 向量
示例
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

执行不带多尺度窗口的对象检测。

参数
img包含检测对象的 CV_8U 或 CV_8UC3 类型图像矩阵。
foundLocationsPoint 向量,每个 Point 包含检测到的对象边界的左上角点。
hitThreshold特征与 SVM 分类平面之间距离的阈值。通常为 0,应在检测器系数中指定(作为最后一个自由系数)。但如果省略自由系数(允许),则可在此处手动指定。
winStride窗口步长。它必须是块步长的倍数。
padding填充
searchLocationsPoint 向量,包含要搜索的位置。

◆ 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 类型图像矩阵。
foundLocationsPoint 向量,每个 Point 包含检测到的对象边界的左上角点。
weights向量,包含每个检测到对象的置信度值。
hitThreshold特征与 SVM 分类平面之间距离的阈值。通常为 0,应在检测器系数中指定(作为最后一个自由系数)。但如果省略自由系数(允许),则可在此处手动指定。
winStride窗口步长。它必须是块步长的倍数。
padding填充
searchLocationsPoint 向量,包含要评估的请求位置集。

◆ 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 > & confidences,
double hitThreshold = 0,
cv::Size winStride = Size(),
cv::Size padding = Size() ) const
virtual

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

参数
img包含检测对象的 CV_8U 或 CV_8UC3 类型图像矩阵。
locationsPoint 向量
foundLocationsPoint 向量,其中每个 Point 是检测到的对象的左上角点。
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.

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