[英]OpenCV and Python : Hog Compute error 215
我正在尝试将OpenCV SVM与Hog描述符一起使用。 使用Python 2.7可以很好地处理第一个示例。 在python 3.6.1上尝试其他示例时,出现以下错误:
error: /usr/local/src/opencv/modules/objdetect/src/hog.cpp:241: error: (-215) img.type() == CV_8U || img.type() == CV_8UC3 in function computeGradient
这是一堆代码:
print('Defining HoG parameters ...')
print (np.array(digits_deskewed).shape)
print(digits_deskewed[0])
# HoG feature descriptor
hog = get_hog();
hog.compute(np.array(digits_deskewed[0]))
给出以下输出:
(42000、28、28)[[0. 0. 0. 0. 0. 0. 0. 0.0.0.0.0.0.0.0.0.0.0.0.0.0 。0. 0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0 。0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0 。0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.0 ..] [0. 0. 0. 0. 0. 0. 0. 0. 0 。0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] [0. 0. 0. 0. 0 。0. 0. 0. 0. 0. 188. 255. 94. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.0.0。]
使用get_hog()为:
def get_hog() :
winSize = (28,28)
blockSize = (4,4)
blockStride = (4,4)
cellSize = (8,8)
nbins = 9
derivAperture = 1
winSigma = -1.
histogramNormType = 0
L2HysThreshold = 0.2
gammaCorrection = 1
nlevels = 64
signedGradient = True
hog = cv2.HOGDescriptor(winSize,blockSize,blockStride,cellSize,nbins,derivAperture,winSigma,histogramNormType,L2HysThreshold,gammaCorrection,nlevels, signedGradient)
return hog
我不知道这个错误的原因,有人可以给我一个线索吗?
谢谢 !
您在numpy数组中有浮点类型。 您需要uint8。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.