我正在尝试可视化图像顶部的边界框。
我的代码:
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.
答案 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)