OpenCV  4.10.0
Open Source Computer Vision
加载中...
搜索中...
无匹配项
公共类型 | 公共成员函数 | 静态公共成员函数 | 公共属性 | 所有成员列表

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)
 
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 (输入数组 img, std::vector< > &foundLocations, std::vector< double > &weights, double hitThreshold=0, 尺寸 winStride=尺寸(), 尺寸 padding=尺寸(), const std::vector< > &searchLocations=std::vector< >()) const
 执行没有多尺度窗口的目标检测。
 
virtual void detectMultiScale (输入数组 img, std::vector< 矩形 > &foundLocations, double hitThreshold=0, 尺寸 winStride=尺寸(), 尺寸 padding=尺寸(), double scale=1.05, double groupThreshold=2.0, bool useMeanshiftGrouping=false) const
 在输入图像中检测不同尺寸的对象。检测到的对象以矩形列表的形式返回。
 
virtual void detectMultiScale (输入数组 img, std::vector< 矩形 > &foundLocations, std::vector< double > &foundWeights, double hitThreshold=0, 尺寸 winStride=尺寸(), 尺寸 padding=尺寸(), double scale=1.05, double groupThreshold=2.0, bool useMeanshiftGrouping=false) const
 在输入图像中检测不同尺寸的对象。检测到的对象以矩形列表的形式返回。
 
virtual void detectMultiScaleROI (输入数组 img, std::vector< cv::矩形 > &foundLocations, std::vector< DetectionROI > &locations, double hitThreshold=0, int groupThreshold=0) const
 评估指定 ROI,并针对各种尺寸返回每个位置的置信度值
 
virtual void detectROI (输入数组 img, const std::vector<  评估指定 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 窗口)训练的分类器的系数。
 

公有属性

大小 块大小
 像素块大小。对齐为单元大小。默认值是 大小(16,16)
 
大小 blockStride
 块步幅。它必须是单元大小的倍数。默认值是 大小(8,8)
 
大小 单元大小
 默认值是 大小(8,8)
 
int derivAperture
 未记录
 
float free_coef
 未记录
 
bool gammaCorrection
 标记,用于指定是否需要伽马校正预处理。
 
HOGDescriptor::直方图归一类型 histogramNormType
 histogramNormType
 
double L2HysThreshold
 L2-Hys 归一方法收缩。
 
int nbins
 用于计算梯度直方图的框数量。默认值是 9。
 
int nlevels
 检测窗口的增加次数的最大值。默认值是 64。
 
UMat oclSvmDetector
 在启用 OpenCL 时所使用的线性 SVM 分类器的系数
 
bool signedGradient
 指示是否将使用带符号梯度。
 
std::vector< float > svmDetector
 线性 SVM 分类器的系数。
 
double winSigma
 高斯平滑窗口参数。
 
大小 winSize
 检测窗口大小。对齐为块大小和块步幅。默认值是 大小(64,128)
 

详细说明

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

Navneet Dalal 和 Bill Triggs [63] 引入的 HOG 描述符算法。

有用的链接

https://hal.inria.fr/inria-00548512/document/

https://en.wikipedia.org/wiki/Histogram_of_oriented_gradients

https://software.intel.com/en-us/ipp-dev-reference-histogram-of-oriented-gradients-hog-descriptor

http://www.learnopencv.com/histogram-of-oriented-gradients

http://www.learnopencv.com/handwritten-digits-classification-an-opencv-c-python-tutorial

示例
samples/cpp/peopledetect.cppsamples/cpp/train_HOG.cppsamples/tapi/hog.cpp

成员枚举文档

◆ 匿名枚举

匿名枚举
枚举器
DEFAULT_NLEVELS 

默认 nlevels 值。

◆ 描述符存储格式

枚举器
DESCR_FORMAT_COL_BY_COL 
DESCR_FORMAT_ROW_BY_ROW 

◆ HistogramNormType

枚举器
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 ( 大小  _winSize,
大小  _blockSize,
大小  _blockStride,
大小  _cellSize,
int  _nbins,
int  _derivAperture = 1,
double  _winSigma = -1,
HOGDescriptor::直方图归一类型  _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,
大小  winStride = Size(),
大小  padding = Size(),
const std::vector< Point > &  locations = std::vector< Point >() 
) const
virtual

计算给定图像的 HOG 描述符。

参数
img类型为 CV_8U 的矩阵,包含将计算 HOG 特性的图像。
descriptors类型为 CV_32F 的矩阵
winStride窗口步长。它必须是块步长的倍数。
padding填充
locationsPoint 向量
示例
samples/cpp/train_HOG.cpp.

◆ computeGradient()

virtual void cv::HOGDescriptor::computeGradient ( InputArray  img,
InputOutputArray  grad,
InputOutputArray  angleOfs,
大小  paddingTL = 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< > &  foundLocations,
double  hitThreshold = 0,
大小  winStride = Size(),
大小  padding = Size(),
const std::vector< Point > &  searchLocations = std::vector<  >() 
) 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< > &  foundLocations,
std::vector< double > &  weights,
double  hitThreshold = 0,
大小  winStride = Size(),
大小  padding = Size(),
const std::vector< Point > &  searchLocations = std::vector<  >() 
) 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,
大小  winStride = 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,
大小  winStride = 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可能的最小矩形数减一。该阈值用于矩形组中以保留它。

◆ 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 类型的矩阵。
locationsPoint 向量
foundLocations每个点为检测到的物体左上角点的 Point(点)向量。
置信度置信度
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 > &  rectList,
std::vector< double > &  weights,
int  groupThreshold,
double  eps 
) const

对对象候选矩形进行分组。

参数
rectList矩形输入/输出向量。输出向量包括保留且已分组的矩形。(不会就地修改 Python 列表。)
weights矩形权重输入/输出向量。输出向量包括保留且已分组的矩形的权重。(不会就地修改 Python 列表。)
groupThreshold可能的最小矩形数减一。该阈值用于矩形组中以保留它。
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.cpp,和 samples/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

像素块大小。对齐为单元大小。默认值是 大小(16,16)

◆ blockStride

Size cv::HOGDescriptor::blockStride

块步幅。它必须是单元大小的倍数。默认值是 大小(8,8)

◆ cellSize

Size cv::HOGDescriptor::cellSize

默认值是 大小(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

用于计算梯度直方图的框数量。默认值是 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

检测窗口大小。对齐为块大小和块步幅。默认值是 大小(64,128)

示例
samples/cpp/train_HOG.cpp.

本结构的文档通过以下文件生成