Python 使用HOG获取图像描述符,但HOG.compute始终返回0.0

Python 使用HOG获取图像描述符,但HOG.compute始终返回0.0,python,opencv,Python,Opencv,尝试使用OpenCV在Python中做一些简单的事情。使用HOG得到特征向量。但我得到的都是0.0。我试过几张照片,结果都是一样的 import cv2 image = cv2.imread("D:\\skhan\\research\\data\\face\\test.jpg",cv2.IMREAD_COLOR) image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) winSize = (64,64) blockSize = (16,16) blockS

尝试使用OpenCV在Python中做一些简单的事情。使用HOG得到特征向量。但我得到的都是0.0。我试过几张照片,结果都是一样的

import cv2
image = cv2.imread("D:\\skhan\\research\\data\\face\\test.jpg",cv2.IMREAD_COLOR)
image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
winSize = (64,64)
blockSize = (16,16)
blockStride = (8,8)
cellSize = (8,8)
nbins = 9
derivAperture = 1
winSigma = 4.0
histogramNormType = 0
L2HysThreshold = 2.0000000000000001e-01
gammaCorrection = 0
nlevels = 64
hog = cv2.HOGDescriptor(winSize,blockSize,blockStride,cellSize,nbins,derivAperture,winSigma,histogramNormType,L2HysThreshold,gammaCorrection,nlevels)
winStride = (8,8)
padding = (8,8)
locations = ((10,20),)
hist = hog.compute(image,winStride,padding,locations)

只需使用
hist=hog.compute(image)
即可得到非零结果

默认情况下,填充、位置都是空元组。但是,如果您坚定地使用
winsride
等,则您的图像为64x64,窗口大小(
winsize
)为64x64,添加8x8
winsride
将不会导致图像上的窗口重叠,因此您的输出用零填充

为了澄清,
winsize
是在整个图像上运行的滑动窗口的大小。由于图像和滑动窗口的大小是相同的,由于计算HoG特征的方式,因此不会创建特征,这就是为什么会看到零