我正在使用OpenCV hogdescriptor 来计算图像不同块的hog描述符。
import cv2
im = cv2.imread('test.jpg',0)
dim = (450,274)
im = cv2.resize(im.astype(float), dim, interpolation = cv2.INTER_LINEAR)
winSize = (68,112)
blockSize = (34,28)
blockStride = (17,14)
cellSize = (17,14)
nbins = 9
hog =cv2.HOGDescriptor(winSize,blockSize,blockStride,cellSize,nbins)
hist=hog.compute(im[1:69,1:113].astype('uint8'))
问题是,当我尝试为图像的一部分计算hog描述符时代码不起作用,但是当我切换到整个图像时,它可以正常工作。我不确定我做错了什么。
我的问题:参数选择有问题吗?是的,我需要更改其他参数的值,例如nlevels
?
我的第二个问题是关于derivAperture
等其他参数的选择,
winSigma
,histogramNormType
,L2HysThreshold
,gammaCorrection
和nlevels
,我可以简单地使用this post中的值吗?对于(68,112)大小的块,上述帖子中 winSigma
的值是否较大?特别是,我不确定 nlevels
所扮演的角色,例如,如果我将其更改为1会发生什么?
我还检查了this post,但它对我没用,因为它没有使用 hogdescriptor 。
我尝试了其他2张图片,但这些图片也不起作用。代码到最后一行,但当它到达 hog.compute 时,它会停止并显示以下消息: 此应用程序已请求Runtime以不寻常的方式终止它。