You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询Python中cv2.HOGDescriptor参数、输入要求与输出规则

OpenCV Python HOGDescriptor 接口说明

以下为参考实现代码:

winSize = (4, 4)
blockSize = (4, 4)
blockStride = (4, 4)
cellSize = (4, 4)
nbins = 9
derivAperture = 1
winSigma = 4.
histogramNormType = 0
L2HysThreshold = 2.0000000000000001e-01
gammaCorrection = 0
nlevels = 64
winStride = (4, 4)
padding = (4, 4)
locations = ((10, 20),)
hog = cv2.HOGDescriptor(winSize,blockSize,blockStride,cellSize,nbins,derivAperture,winSigma,
                        histogramNormType,L2HysThreshold,gammaCorrection,nlevels)
res = hog.compute(im,winStride,padding,locations)

注意:所有尺寸类元组参数的顺序均为(宽度, 高度),和OpenCV图像默认的(行数, 列数)坐标顺序相反,传参时需注意顺序不要颠倒

构造函数参数(初始化HOG描述子实例时传入)

  • winSize:类型为tuple[int, int],检测窗口的尺寸,宽高必须是blockStride的整数倍
  • blockSize:类型为tuple[int, int],每个块的尺寸,宽高必须是cellSize的整数倍
  • blockStride:类型为tuple[int, int],块在窗口内滑动的步长,宽高必须是cellSize的整数倍
  • cellSize:类型为tuple[int, int],每个细胞单元的像素尺寸,单元内会统计梯度方向直方图
  • nbins:类型为int,梯度直方图的方向分箱数量,常用取值为9,对应将0-180度无向梯度划分为9个等距区间
  • derivAperture:类型为int,计算图像梯度时使用的Sobel算子核大小,支持取值1、3、5、7;取1时不使用Sobel核,直接用[-1,0,1]的一阶中心差分计算梯度
  • winSigma:类型为float,检测窗口预处理高斯平滑的高斯核标准差,用于对梯度幅值做空间加权
  • histogramNormType:类型为int,块直方图的归一化类型,0对应最常用的L2-Hys归一化
  • L2HysThreshold:类型为float,L2-Hys归一化使用的截断阈值,常用取值为0.2
  • gammaCorrection:类型为int,布尔开关,传0表示关闭输入图像的gamma校正预处理,传1表示开启
  • nlevels:类型为int,多尺度检测时使用的图像金字塔最大层数

compute() 特征计算方法参数

  • im:类型为numpy.ndarray,输入图像,支持单通道灰度图或三通道BGR彩色图,常规使用uint8数据类型即可
  • winStride:类型为tuple[int, int],检测窗口在整图上滑动的步长,宽高必须是blockStride的整数倍
  • padding:类型为tuple[int, int],图像边缘的补零尺寸,用于解决边缘位置窗口超出图像范围的计算问题
  • locations:类型为tuple[tuple[int, int], ...],手动指定的检测窗口左上角坐标集合;传入该参数时会跳过滑动窗口逻辑,仅计算指定坐标位置的HOG特征

输出内容说明

  • 返回值res类型为numpy.ndarray,是形状为(特征总维度, 1)的float32类型列向量
  • 单个检测窗口的特征维度计算规则:
    单个块特征维度 = (blockSize.width / cellSize.width) * (blockSize.height / cellSize.height) * nbins
    单窗口块总数 = ((winSize.width - blockSize.width) / blockStride.width + 1) * ((winSize.height - blockSize.height) / blockStride.height + 1)
    单窗口特征维度 = 单个块特征维度 * 单窗口块总数
  • 如果传入多个检测位置、或使用滑动窗口生成多个检测位置,返回结果为所有位置的特征按顺序拼接后的数组

内容的提问来源于stack exchange,提问作者Farah Fekih

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 19:24:24