我正在尝试可视化图像顶部的边界框。
我的代码:
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.
您需要确保您的边界坐标是整数。
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
都可以。
将坐标点作为列表传递时出现此错误:
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)
有时与 OpenCV 相关的错误原因是您的图像(numpy 数组)在内存中不连续。 请重试您的图像明确连续:
img = np.ascontiguousarray(img)
当您对图像执行一些操作(例如切片、更改 RGB 顺序等)时,图像往往不连续。
不需要声明厚度,直接给出数字即可,例如
cv2.rectangle(img, (0, 0), (250, 250), 3)
这里3代表厚度,
img
名称也不需要冒号。
当尝试使用变量设置边界框的颜色在图像上绘制边界框时,我遇到了同样的错误,如下所示:
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)