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

时间:2017-12-04 23:54:34

标签: opencv draw typeerror

您好我正在尝试运行涉及绘制框但仍会返回错误的代码

TypeError: integer argument expected, got float

出现的代码中的第一个问题是

def draw_box(Image, x, y, w, h):
    cv2.line(Image, (x, y), (x + (w/5) ,y), WHITE, 2)
    cv2.line(Image, (x+((w/5)*4), y), (x+w, y), WHITE, 2)
    cv2.line(Image, (x, y), (x, y+(h/5)), WHITE, 2)
    cv2.line(Image, (x+w, y), (x+w, y+(h/5)), WHITE, 2)
    cv2.line(Image, (x, (y+(h/5*4))), (x, y+h), WHITE, 2)
    cv2.line(Image, (x, (y+h)), (x + (w/5) ,y+h), WHITE, 2)
    cv2.line(Image, (x+((w/5)*4), y+h), (x + w, y + h), WHITE, 2)
    cv2.line(Image, (x+w, (y+(h/5*4))), (x+w, y+h), WHITE, 2)

我通过用python floor division替换除法符号来修复,但是下一个框图的区域返回相同的类型错误

cv2.rectangle(Image, (Name_X_pos-10, Name_y_pos-25), (Name_X_pos +10 + (len(NAME) * 7), Name_y_pos-1), (0,0,0), -2)

我试过把cv2.rectangle(int(图片,(Name_ ..仅用于接收)

TypeError: int() takes at most 2 arguments (5 given)

有关如何解决此问题的任何想法?

1 个答案:

答案 0 :(得分:1)

与原始错误一样,rectangle()调用中的问题是指定像素坐标的参数不是整数。即使没有除法,也不清楚你的一些原始变量是浮点数还是只是将它们中的一些转换成浮点数而不是整数...无论哪种方式,如果你只是将每个坐标转换为整数,你应该是好的去。例如:

cv2.rectangle(Image,
              (int(Name_X_pos-10), int(Name_y_pos-25)),
              (int(Name_X_pos +10 + (len(NAME) * 7)), int(Name_y_pos-1)),
              (0,0,0), -2)