您好,我正在尝试运行涉及绘制框的代码,但不断返回错误
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。矩形(int)(图像,(名称)仅接收回
TypeError: int() takes at most 2 arguments (5 given)
有没有办法解决这个问题?
与最初的错误一样,在您的矩形()
调用中的问题是指定像素坐标的参数不是整数。即使没有除法,也不清楚你的一些原始变量是浮点数,还是乘法只是将其中一些转换为浮点数而不是整数...不管怎样,如果你只是将每个坐标转换为整数,你应该可以走了。例如:
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)