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

标签 python opencv

64x64 image
尝试使用OpenCV在Python中做一些简单的事情。使用HOG获取特征 vector 。但是我得到了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)可以得出非零的结果。

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

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

关于python - 使用HOG获取图像描述符,但hog.compute始终返回0.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47787803/

相关文章:

python - 使用带有列表与范围的 .ix 索引的意外结果

python - cv2.approxPolydp() 返回什么?

opencv - OpenCV kmeans:N> = K异常,错误(-215)

python - 在 Jupyter 实验室中连接 pytrends 时出错

python - 构建程序。 Python 中的类和函数

python - 网页正在使用 Chromedriver 作为机器人检测 Selenium Webdriver

python - 自动调整 NumPy 重新数组的大小

c++ - 形状检测 - 使用 OpenCV 进行轮廓逼近

opencv - 将depth_image从Kinect转换为OpenCV经典格式(IplImage)以显示

python - 使用 OpenCV 在 Python 中迭代 CvMat 的最快方法是什么?