cv2.rectangle:TypeError:由名称(“厚度”)和位置(4)给出的参数

时间:2019-05-06 18:55:39

标签: python opencv computer-vision vision

我正在尝试可视化图像顶部的边界框。

我的代码:

color = (255, 255, 0)
thickness = 4
x_min, y_min, x_max, y_max = bbox
cv2.rectangle(img, (x_min, y_min), (x_max, y_max), color, thickness=thickness)

我得到 TypeError: Argument given by name ('thickness') and position (4) 即使我通过位置厚度,也会得到不同的回溯:

cv2.rectangle(img, (x_min, y_min), (x_max, y_max), color, thickness)

提高TypeError: expected a tuple.

4 个答案:

答案 0 :(得分:2)

将坐标点作为列表传递时出现此错误:

start_point = [0, 0]
end_point = [10, 10]
cv2.rectangle(image, start_point, end_point, color, thickness=1)

将它们作为元组传递可以解决问题:

cv2.rectangle(image, tuple(start_point), tuple(end_point), color, thickness=1)

答案 1 :(得分:0)

您需要确保边界坐标是整数。

x_min, y_min, x_max, y_max = map(int, bbox)
cv2.rectangle(img, (x_min, y_min), (x_max, y_max), color, thickness)

调用cv2.rectangle都可以。

答案 2 :(得分:0)

不需要声明厚度,直接给出数字即可,例如

cv2.rectangle(img, (0, 0), (250, 250), 3)

这里 3 代表粗细,而且 img 名称不需要冒号。

答案 3 :(得分:0)

当我尝试使用变量在图像上绘制边界框以设置边界框的颜色时遇到同样的错误:

bbox_color = (id, id, id)
cv2.rectangle(img, (x1, y1), (x2, y2), bbox_color, thickness=1)

我想错误是因为颜色参数中的类型不匹配。它应该是 类型,但在我的例子中,它是 类型。

这可以通过将每个元素转换为正确的类型来解决,如下所示:

bbox_color = (id, id, id)
bbox_color = [int(c) for c in bbox_color]
cv2.rectangle(img, (x1, y1), (x2, y2), bbox_color, thickness=1)