当我在某些包含非常不规则形状的图像上调用mahotas.features.zernike_moments
时,出现以下错误:
fv = mahotas.features.zernike_moments(mask, cv2.minEnclosingCircle(cnt)[1], degree=8)
File "C:\Users\admin\AppData\Local\Programs\Python\Python37\lib\site-packages\mahotas\features\zernike.py", line 59, in zernike_moments
c0,c1 = center_of_mass(im)
ValueError: too many values to unpack (expected 2)
它适用于如下所示的简单形状:
但是在下面的图像中,使用以下代码出现了错误。知道我在做什么错吗?
penStrokes = np.array(penStrokes)
peri = cv2.arcLength(penStrokes, True)
approx = cv2.approxPolyDP(penStrokes, 0.02 * peri, True)
mask = np.zeros((frame.shape[0], frame.shape[1], 1), dtype='uint8')
cv2.drawContours(mask, [approx], -1, (255,), -1)
cnt = cv2.findContours(mask.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)[1][0]
cv2.imshow('mask', mask)
# Determine shape from zernike moments
fv = mahotas.features.zernike_moments(mask, cv2.minEnclosingCircle(cnt)[1], degree=8)
print(fv)
编辑似乎可以将蒙版调整为500像素宽,代码可以正常工作吗?象形文字的形状需要最小尺寸吗?
答案 0 :(得分:0)
这是mahotas的作者。
mask
是3D图像(尽管最后一个尺寸是1
),而该功能仅适用于1D图像。试试:
fv = mahotas.features.zernike_moments(mask[:,:,0], \
cv2.minEnclosingCircle(cnt)[1], \
degree=8)