TypeError:期望的整数参数,得到浮点python 2.7

时间:2017-06-05 07:36:00

标签: python-2.7 opencv3.0

我使用以下代码来检测模式。为什么会抛出TypeError?

# loop over the contours

c中的c:

# compute the center of the contour
M = cv2.moments(c)

    cX = (M["m10"] / (M["m00"] + 1e-7))
cY = (M["m01"] / (M["m00"] + 1e-7))

# draw the contour and center of the shape on the image
cv2.drawContours(frame1, [c], -1, (0, 255, 0), 2)
cv2.circle(frame1, (cX, cY), 7, (255, 255, 255), -1)
cv2.putText(frame1, "center", (cX - 20, cY - 20),
    cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 255, 255), 2)

这个按摩错误

    cv2.circle(frame1, (cX, cY), 7, (255, 255, 255), -1)

TypeError:期望的整数参数,浮点数

2 个答案:

答案 0 :(得分:2)

(cX, cY)是一个OpenCV点。它表示 x-y 坐标,换言之,表示像素位置。如果你调用的函数说它需要一个整数,那么它需要一个整数。无论你认为它应该期待什么。

cv2.moments()返回10个浮点字典。如果你想使用它返回的值作为坐标点,那么你需要以某种方式将它们转换为整数。

答案 1 :(得分:0)

这是因为您的部门为您提供了浮点值:

cX = (M["m10"] // (M["m00"] + 1e-7))
cY = (M["m01"] // (M["m00"] + 1e-7))

这将解决您的问题。