OpenCV–HOG类介绍,以及使用(python)
有关HOG特征描述的原理,请参考博客,写的不错[doge]:https://blog.csdn.net/qq_40913465/article/details/106065027
详细的方法使用请参考官网:https://docs.opencv.org/4.1.2/d5/d33/structcv_1_1HOGDescriptor.html#a723b95b709cfd3f95cf9e616de988fc8
本文只介绍计算HOG所需的几个方法,其他方法见官网:
1.使用默认参数创建HOG描述符和检测器。
cv.HOGDescriptor (
winSize
,blockSize
,blockStride
,cellSize
,nbins
,derivAperture = 1
,winSigma = -1
,histogramNormType = HOGDescriptor::L2Hys
,L2HysThreshold = 0.2
,gammaCorrection = false
,nlevels = HOGDescriptor::DEFAULT_NLEVELS
,signedGradient = false
)
常用参数介绍:
winSize
: 设置滑动窗口大小;blockSize
: 设置block块大小;blockStride
: 设置block块每一次移动的像素点大小;cellSize
: 设置cell单元格大小;nbins
: 设置bin数的数目;
后面的参数设置默认就行并不常用,如果想更改请参考官网。
计算给定图像的HOG描述符
cv.compute(
img
,winStride
,padding
)
参数介绍:
img
: 包含将计算HOG特征的图像的CV_8U类型的矩阵;winStride
: 窗口大小,必须是blockStride的倍数;padding
: 边界处理的padding。
代码示例:
import cv2 as cv
import numpy as np
img = cv.imread("./img/lena.jpg",0)
img = cv.resize(img, (64,128))
cv.imshow("img", img)
cv.waitKey(0)
cv.destroyAllWindows()
![](https://i-blog.csdnimg.cn/blog_migrate/773e0ec763f320ebccd461da09def7bc.png)
#设置参数
winSize = (64,128)
blockSize = (16,16)
blockStride = (8, 8)
cellSize = (8,8)
nbins =9
padding = (1,1)
hog = cv.HOGDescriptor(winSize, blockSize, blockStride, cellSize, nbins)
hogdescriptor = hog.compute(img, padding)
print(hogdescriptor.shape)
(3780, 1)