【跑实验03】如何可视化GT边界框,如何选择边界框内部的边界框,如何可视化GT框和预测框,如何定义IoU阈值下的不同边界框?

news2024/11/25 11:50:00

文章目录

  • 一、如何可视化GT边界框?
  • 二、GT框和预测框的可视化
  • 三、根据IoU阈值来选择

一、如何可视化GT边界框?

from PIL import Image, ImageDraw

def draw_bboxes(image, bboxes, color="red", thickness=2):
    draw = ImageDraw.Draw(image)
    for bbox in bboxes:
        bbox = tuple(map(int, bbox))  # 将浮点数类型的坐标转换为整数类型
        draw.rectangle(bbox, outline=color, width=thickness)
    del draw

# 示例用法
image_path = "D:/CodeProject/CLIP+SAM/datasets/Objects365/Images/train/obj365_train_000000000003.jpg"  # 原始图像路径
bboxes = [
    (46, 318, 400, 656), (0, 0, 330, 359), (373, 268, 393, 283), (73, 322, 98, 374), (280, 269, 307, 306), (40, 305, 69, 353), \
    (243, 260, 268, 294), (54, 364, 168, 414), (279, 305, 352, 330), (26, 346, 48, 396), (12, 331, 76, 356), (201, 285, 260, 305), \
    (0, 270, 106, 327)
]  # 边界框坐标信息

image = Image.open(image_path).convert("RGB")
draw_bboxes(image, bboxes)

# 显示绘制边界框后的图像
image.show()

这行代码定义了一个名为 draw_bboxes 的函数,它接受三个必需参数和两个可选参数:

  • image:要绘制边界框的图像对象。
  • bboxes:一个包含边界框坐标的列表。
  • color:边界框的颜色,默认为红色。
  • thickness:边界框的线条粗细,默认为 2 像素。

执行以下操作:

  1. 创建一个 ImageDraw 对象,用于在图像上进行绘制。
  2. 使用循环迭代边界框列表,对每个边界框执行以下操作:

将边界框坐标的浮点数类型转换为整数类型,以便绘制函数接受整数坐标。

调用 draw.rectangle 方法,在图像上绘制矩形边界框,使用指定的颜色和线条粗细。

  1. 删除 ImageDraw 对象,释放资源。

综合起来,这个函数的目的是在图像上绘制给定边界框列表的矩形框。

需要注意的是,该函数使用了 ImageDraw 类,它是 PIL(Python Imaging Library)中的一个图像绘制工具类。所以在使用该函数之前,你需要确保已经导入了相应的模块,例如 from PIL import ImageDraw。

我们展示一下输出结果为:

在这里插入图片描述

二、GT框和预测框的可视化

def draw_bboxes(image, bboxes, color = "red", thickness = 2):
    draw = ImageDraw.Draw(image)
    for bbox in bboxes:
        bbox = tuple(map(int, bbox))  # 将浮点数类型的坐标转换为整数类型
        draw.rectangle(bbox, outline=color, width=thickness)
    del draw

def draw_bboxes_2(image, bboxes, color = "blue", thickness = 1):
    draw = ImageDraw.Draw(image)
    for bbox in bboxes:
        bbox = tuple(map(int, bbox))  # 将浮点数类型的坐标转换为整数类型
        draw.rectangle(bbox, outline=color, width=thickness)
    del draw

# 示例用法
image_path = "demo.jpg"
bboxes = [
    (236, 41, 263, 180), (218, 174, 248, 207), (306, 10, 332, 175), (396, 0, 426, 162),
    (189, 281, 528, 512), (255, 293, 388, 512), (193, 285, 302, 476),
    (146, 280, 213, 445), (339, 113, 450, 229), (406, 49, 508, 177), (499, 82, 537, 229),
    (521, 0, 683, 167), (5, 281, 88, 389), (162, 275, 212, 366), (10, 79, 67, 235),
    (142, 97, 196, 234), (325, 275, 533, 411), (65, 82, 154, 165), (462, 251, 488, 285),
    (422, 277, 502, 286), (501, 254, 512, 290), (511, 255, 521, 288), (532, 151, 676, 451),
    (61, 171, 163, 198), (64, 268, 166, 291), (83, 291, 166, 377), (502, 254, 520, 283),
    (11, 250, 32, 273), (12, 272, 34, 282), (288, 284, 332, 301)
]

image = Image.open(image_path).convert("RGB")
draw_bboxes(image, bboxes)
draw_bboxes_2(image, bbox_list)

image.show()

显示结果为:

在这里插入图片描述

三、根据IoU阈值来选择

def calculate_iou(bbox1, bbox2):
    x1_min, y1_min, x1_max, y1_max = bbox1
    x2_min, y2_min, x2_max, y2_max = bbox2

    # 计算两个边界框的相交部分
    x_min = max(x1_min, x2_min)
    y_min = max(y1_min, y2_min)
    x_max = min(x1_max, x2_max)
    y_max = min(y1_max, y2_max)

    intersection = max(0, x_max - x_min) * max(0, y_max - y_min)

    # 计算两个边界框的面积
    area1 = (x1_max - x1_min) * (y1_max - y1_min)
    area2 = (x2_max - x2_min) * (y2_max - y2_min)

    # 计算 IoU
    iou = intersection / (area1 + area2 - intersection)

    return iou

bboxes = [
    (236, 41, 263, 180), (218, 174, 248, 207), (306, 10, 332, 175), (396, 0, 426, 162),
    (189, 281, 528, 512), (255, 293, 388, 512), (193, 285, 302, 476),
    (146, 280, 213, 445), (339, 113, 450, 229), (406, 49, 508, 177), (499, 82, 537, 229),
    (521, 0, 683, 167), (5, 281, 88, 389), (162, 275, 212, 366), (10, 79, 67, 235),
    (142, 97, 196, 234), (325, 275, 533, 411), (65, 82, 154, 165), (462, 251, 488, 285),
    (422, 277, 502, 286), (501, 254, 512, 290), (511, 255, 521, 288), (532, 151, 676, 451),
    (61, 171, 163, 198), (64, 268, 166, 291), (83, 291, 166, 377), (502, 254, 520, 283),
    (11, 250, 32, 273), (12, 272, 34, 282), (288, 284, 332, 301)
]

selected_bboxes = []
for pred_bbox in bbox_list:
    for gt_bbox in bboxes:
        iou_scores = [calculate_iou(pred_bbox, gt_bbox) for gt_bbox in bboxes]
        max_iou = max(iou_scores)
        if max_iou > 0.4:
            selected_bboxes.append(pred_bbox)

print(selected_bboxes)

输出的结果为:

[(534, 22, 676, 453), (534, 22, 676, 453), (534, 22, 676, 453), (534, 22, 676, 453), (534, 22, 676, 453), (534, 22, 676, 453), (534, 22, 676, 453), (534, 22, 676, 453), (534, 22, 676, 453), (534, 22, 676, 453), (534, 22, 676, 453), (534, 22, 676, 453), (534, 22, 676, 453), (534, 22, 676, 453), (534, 22, 676, 453), (534, 22, 676, 453), (534, 22, 676, 453), (534, 22, 676, 453), (534, 22, 676, 453), (534, 22, 676, 453), (534, 22, 676, 453), (534, 22, 676, 453), (534, 22, 676, 453), (534, 22, 676, 453), (534, 22, 676, 453), (534, 22, 676, 453), (534, 22, 676, 453), (534, 22, 676, 453), (534, 22, 676, 453), (534, 22, 676, 453), (535, 155, 676, 453), (535, 155, 676, 453), (535, 155, 676, 453), (535, 155, 676, 453), (535, 155, 676, 453), (535, 155, 676, 453), (535, 155, 676, 453), (535, 155, 676, 453), (535, 155, 676, 453), (535, 155, 676, 453), (535, 155, 676, 453), (535, 155, 676, 453), (535, 155, 676, 453), (535, 155, 676, 453), (535, 155, 676, 453), (535, 155, 676, 453), (535, 155, 676, 453), (535, 155, 676, 453), (535, 155, 676, 453), (535, 155, 676, 453), (535, 155, 676, 453), (535, 155, 676, 453), (535, 155, 676, 453), (535, 155, 676, 453), (535, 155, 676, 453), (535, 155, 676, 453), (535, 155, 676, 453), (535, 155, 676, 453), (535, 155, 676, 453), (535, 155, 676, 453), (227, 287, 526, 509), (227, 287, 526, 509), (227, 287, 526, 509), (227, 287, 526, 509), (227, 287, 526, 509), (227, 287, 526, 509), (227, 287, 526, 509), (227, 287, 526, 509), (227, 287, 526, 509), (227, 287, 526, 509), (227, 287, 526, 509), (227, 287, 526, 509), (227, 287, 526, 509), (227, 287, 526, 509), (227, 287, 526, 509), (227, 287, 526, 509), (227, 287, 526, 509), (227, 287, 526, 509), (227, 287, 526, 509), (227, 287, 526, 509), (227, 287, 526, 509), (227, 287, 526, 509), (227, 287, 526, 509), (227, 287, 526, 509), (227, 287, 526, 509), (227, 287, 526, 509), (227, 287, 526, 509), (227, 287, 526, 509), (227, 287, 526, 509), (227, 287, 526, 509), (278, 319, 519, 509), (278, 319, 519, 509), (278, 319, 519, 509), (278, 319, 519, 509), (278, 319, 519, 509), (278, 319, 519, 509), (278, 319, 519, 509), (278, 319, 519, 509), (278, 319, 519, 509), (278, 319, 519, 509), (278, 319, 519, 509), (278, 319, 519, 509), (278, 319, 519, 509), (278, 319, 519, 509), (278, 319, 519, 509), (278, 319, 519, 509), (278, 319, 519, 509), (278, 319, 519, 509), (278, 319, 519, 509), (278, 319, 519, 509), (278, 319, 519, 509), (278, 319, 519, 509), (278, 319, 519, 509), (278, 319, 519, 509), (278, 319, 519, 509), (278, 319, 519, 509), (278, 319, 519, 509), (278, 319, 519, 509), (278, 319, 519, 509), (278, 319, 519, 509), (537, 155, 675, 351), (537, 155, 675, 351), (537, 155, 675, 351), (537, 155, 675, 351), (537, 155, 675, 351), (537, 155, 675, 351), (537, 155, 675, 351), (537, 155, 675, 351), (537, 155, 675, 351), (537, 155, 675, 351), (537, 155, 675, 351), (537, 155, 675, 351), (537, 155, 675, 351), (537, 155, 675, 351), (537, 155, 675, 351), (537, 155, 675, 351), (537, 155, 675, 351), (537, 155, 675, 351), (537, 155, 675, 351), (537, 155, 675, 351), (537, 155, 675, 351), (537, 155, 675, 351), (537, 155, 675, 351), (537, 155, 675, 351), (537, 155, 675, 351), (537, 155, 675, 351), (537, 155, 675, 351), (537, 155, 675, 351), (537, 155, 675, 351), (537, 155, 675, 351), (236, 297, 382, 510), (236, 297, 382, 510), (236, 297, 382, 510), (236, 297, 382, 510), (236, 297, 382, 510), (236, 297, 382, 510), (236, 297, 382, 510), (236, 297, 382, 510), (236, 297, 382, 510), (236, 297, 382, 510), (236, 297, 382, 510), (236, 297, 382, 510), (236, 297, 382, 510), (236, 297, 382, 510), (236, 297, 382, 510), (236, 297, 382, 510), (236, 297, 382, 510), (236, 297, 382, 510), (236, 297, 382, 510), (236, 297, 382, 510), (236, 297, 382, 510), (236, 297, 382, 510), (236, 297, 382, 510), (236, 297, 382, 510), (236, 297, 382, 510), (236, 297, 382, 510), (236, 297, 382, 510), (236, 297, 382, 510), (236, 297, 382, 510), (236, 297, 382, 510), (416, 52, 530, 175), (416, 52, 530, 175), (416, 52, 530, 175), (416, 52, 530, 175), (416, 52, 530, 175), (416, 52, 530, 175), (416, 52, 530, 175), (416, 52, 530, 175), (416, 52, 530, 175), (416, 52, 530, 175), (416, 52, 530, 175), (416, 52, 530, 175), (416, 52, 530, 175), (416, 52, 530, 175), (416, 52, 530, 175), (416, 52, 530, 175), (416, 52, 530, 175), (416, 52, 530, 175), (416, 52, 530, 175), (416, 52, 530, 175), (416, 52, 530, 175), (416, 52, 530, 175), (416, 52, 530, 175), (416, 52, 530, 175), (416, 52, 530, 175), (416, 52, 530, 175), (416, 52, 530, 175), (416, 52, 530, 175), (416, 52, 530, 175), (416, 52, 530, 175), (332, 165, 533, 397), (332, 165, 533, 397), (332, 165, 533, 397), (332, 165, 533, 397), (332, 165, 533, 397), (332, 165, 533, 397), (332, 165, 533, 397), (332, 165, 533, 397), (332, 165, 533, 397), (332, 165, 533, 397), (332, 165, 533, 397), (332, 165, 533, 397), (332, 165, 533, 397), (332, 165, 533, 397), (332, 165, 533, 397), (332, 165, 533, 397), (332, 165, 533, 397), (332, 165, 533, 397), (332, 165, 533, 397), (332, 165, 533, 397), (332, 165, 533, 397), (332, 165, 533, 397), (332, 165, 533, 397), (332, 165, 533, 397), (332, 165, 533, 397), (332, 165, 533, 397), (332, 165, 533, 397), (332, 165, 533, 397), (332, 165, 533, 397), (332, 165, 533, 397), (4, 78, 67, 230), (4, 78, 67, 230), (4, 78, 67, 230), (4, 78, 67, 230), (4, 78, 67, 230), (4, 78, 67, 230), (4, 78, 67, 230), (4, 78, 67, 230), (4, 78, 67, 230), (4, 78, 67, 230), (4, 78, 67, 230), (4, 78, 67, 230), (4, 78, 67, 230), (4, 78, 67, 230), (4, 78, 67, 230), (4, 78, 67, 230), (4, 78, 67, 230), (4, 78, 67, 230), (4, 78, 67, 230), (4, 78, 67, 230), (4, 78, 67, 230), (4, 78, 67, 230), (4, 78, 67, 230), (4, 78, 67, 230), (4, 78, 67, 230), (4, 78, 67, 230), (4, 78, 67, 230), (4, 78, 67, 230), (4, 78, 67, 230), (4, 78, 67, 230), (65, 87, 161, 194), (65, 87, 161, 194), (65, 87, 161, 194), (65, 87, 161, 194), (65, 87, 161, 194), (65, 87, 161, 194), (65, 87, 161, 194), (65, 87, 161, 194), (65, 87, 161, 194), (65, 87, 161, 194), (65, 87, 161, 194), (65, 87, 161, 194), (65, 87, 161, 194), (65, 87, 161, 194), (65, 87, 161, 194), (65, 87, 161, 194), (65, 87, 161, 194), (65, 87, 161, 194), (65, 87, 161, 194), (65, 87, 161, 194), (65, 87, 161, 194), (65, 87, 161, 194), (65, 87, 161, 194), (65, 87, 161, 194), (65, 87, 161, 194), (65, 87, 161, 194), (65, 87, 161, 194), (65, 87, 161, 194), (65, 87, 161, 194), (65, 87, 161, 194), (6, 280, 158, 386), (6, 280, 158, 386), (6, 280, 158, 386), (6, 280, 158, 386), (6, 280, 158, 386), (6, 280, 158, 386), (6, 280, 158, 386), (6, 280, 158, 386), (6, 280, 158, 386), (6, 280, 158, 386), (6, 280, 158, 386), (6, 280, 158, 386), (6, 280, 158, 386), (6, 280, 158, 386), (6, 280, 158, 386), (6, 280, 158, 386), (6, 280, 158, 386), (6, 280, 158, 386), (6, 280, 158, 386), (6, 280, 158, 386), (6, 280, 158, 386), (6, 280, 158, 386), (6, 280, 158, 386), (6, 280, 158, 386), (6, 280, 158, 386), (6, 280, 158, 386), (6, 280, 158, 386), (6, 280, 158, 386), (6, 280, 158, 386), (6, 280, 158, 386), (417, 53, 505, 161), (417, 53, 505, 161), (417, 53, 505, 161), (417, 53, 505, 161), (417, 53, 505, 161), (417, 53, 505, 161), (417, 53, 505, 161), (417, 53, 505, 161), (417, 53, 505, 161), (417, 53, 505, 161), (417, 53, 505, 161), (417, 53, 505, 161), (417, 53, 505, 161), (417, 53, 505, 161), (417, 53, 505, 161), (417, 53, 505, 161), (417, 53, 505, 161), (417, 53, 505, 161), (417, 53, 505, 161), (417, 53, 505, 161), (417, 53, 505, 161), (417, 53, 505, 161), (417, 53, 505, 161), (417, 53, 505, 161), (417, 53, 505, 161), (417, 53, 505, 161), (417, 53, 505, 161), (417, 53, 505, 161), (417, 53, 505, 161), (417, 53, 505, 161), (342, 109, 421, 227), (342, 109, 421, 227), (342, 109, 421, 227), (342, 109, 421, 227), (342, 109, 421, 227), (342, 109, 421, 227), (342, 109, 421, 227), (342, 109, 421, 227), (342, 109, 421, 227), (342, 109, 421, 227), (342, 109, 421, 227), (342, 109, 421, 227), (342, 109, 421, 227), (342, 109, 421, 227), (342, 109, 421, 227), (342, 109, 421, 227), (342, 109, 421, 227), (342, 109, 421, 227), (342, 109, 421, 227), (342, 109, 421, 227), (342, 109, 421, 227), (342, 109, 421, 227), (342, 109, 421, 227), (342, 109, 421, 227), (342, 109, 421, 227), (342, 109, 421, 227), (342, 109, 421, 227), (342, 109, 421, 227), (342, 109, 421, 227), (342, 109, 421, 227), (74, 270, 164, 375), (74, 270, 164, 375), (74, 270, 164, 375), (74, 270, 164, 375), (74, 270, 164, 375), (74, 270, 164, 375), (74, 270, 164, 375), (74, 270, 164, 375), (74, 270, 164, 375), (74, 270, 164, 375), (74, 270, 164, 375), (74, 270, 164, 375), (74, 270, 164, 375), (74, 270, 164, 375), (74, 270, 164, 375), (74, 270, 164, 375), (74, 270, 164, 375), (74, 270, 164, 375), (74, 270, 164, 375), (74, 270, 164, 375), (74, 270, 164, 375), (74, 270, 164, 375), (74, 270, 164, 375), (74, 270, 164, 375), (74, 270, 164, 375), (74, 270, 164, 375), (74, 270, 164, 375), (74, 270, 164, 375), (74, 270, 164, 375), (74, 270, 164, 375), (6, 282, 85, 386), (6, 282, 85, 386), (6, 282, 85, 386), (6, 282, 85, 386), (6, 282, 85, 386), (6, 282, 85, 386), (6, 282, 85, 386), (6, 282, 85, 386), (6, 282, 85, 386), (6, 282, 85, 386), (6, 282, 85, 386), (6, 282, 85, 386), (6, 282, 85, 386), (6, 282, 85, 386), (6, 282, 85, 386), (6, 282, 85, 386), (6, 282, 85, 386), (6, 282, 85, 386), (6, 282, 85, 386), (6, 282, 85, 386), (6, 282, 85, 386), (6, 282, 85, 386), (6, 282, 85, 386), (6, 282, 85, 386), (6, 282, 85, 386), (6, 282, 85, 386), (6, 282, 85, 386), (6, 282, 85, 386), (6, 282, 85, 386), (6, 282, 85, 386), (197, 288, 271, 475), (197, 288, 271, 475), (197, 288, 271, 475), (197, 288, 271, 475), (197, 288, 271, 475), (197, 288, 271, 475), (197, 288, 271, 475), (197, 288, 271, 475), (197, 288, 271, 475), (197, 288, 271, 475), (197, 288, 271, 475), (197, 288, 271, 475), (197, 288, 271, 475), (197, 288, 271, 475), (197, 288, 271, 475), (197, 288, 271, 475), (197, 288, 271, 475), (197, 288, 271, 475), (197, 288, 271, 475), (197, 288, 271, 475), (197, 288, 271, 475), (197, 288, 271, 475), (197, 288, 271, 475), (197, 288, 271, 475), (197, 288, 271, 475), (197, 288, 271, 475), (197, 288, 271, 475), (197, 288, 271, 475), (197, 288, 271, 475), (197, 288, 271, 475), (327, 274, 533, 407), (327, 274, 533, 407), (327, 274, 533, 407), (327, 274, 533, 407), (327, 274, 533, 407), (327, 274, 533, 407), (327, 274, 533, 407), (327, 274, 533, 407), (327, 274, 533, 407), (327, 274, 533, 407), (327, 274, 533, 407), (327, 274, 533, 407), (327, 274, 533, 407), (327, 274, 533, 407), (327, 274, 533, 407), (327, 274, 533, 407), (327, 274, 533, 407), (327, 274, 533, 407), (327, 274, 533, 407), (327, 274, 533, 407), (327, 274, 533, 407), (327, 274, 533, 407), (327, 274, 533, 407), (327, 274, 533, 407), (327, 274, 533, 407), (327, 274, 533, 407), (327, 274, 533, 407), (327, 274, 533, 407), (327, 274, 533, 407), (327, 274, 533, 407), (86, 291, 162, 375), (86, 291, 162, 375), (86, 291, 162, 375), (86, 291, 162, 375), (86, 291, 162, 375), (86, 291, 162, 375), (86, 291, 162, 375), (86, 291, 162, 375), (86, 291, 162, 375), (86, 291, 162, 375), (86, 291, 162, 375), (86, 291, 162, 375), (86, 291, 162, 375), (86, 291, 162, 375), (86, 291, 162, 375), (86, 291, 162, 375), (86, 291, 162, 375), (86, 291, 162, 375), (86, 291, 162, 375), (86, 291, 162, 375), (86, 291, 162, 375), (86, 291, 162, 375), (86, 291, 162, 375), (86, 291, 162, 375), (86, 291, 162, 375), (86, 291, 162, 375), (86, 291, 162, 375), (86, 291, 162, 375), (86, 291, 162, 375), (86, 291, 162, 375), (143, 98, 196, 229), (143, 98, 196, 229), (143, 98, 196, 229), (143, 98, 196, 229), (143, 98, 196, 229), (143, 98, 196, 229), (143, 98, 196, 229), (143, 98, 196, 229), (143, 98, 196, 229), (143, 98, 196, 229), (143, 98, 196, 229), (143, 98, 196, 229), (143, 98, 196, 229), (143, 98, 196, 229), (143, 98, 196, 229), (143, 98, 196, 229), (143, 98, 196, 229), (143, 98, 196, 229), (143, 98, 196, 229), (143, 98, 196, 229), (143, 98, 196, 229), (143, 98, 196, 229), (143, 98, 196, 229), (143, 98, 196, 229), (143, 98, 196, 229), (143, 98, 196, 229), (143, 98, 196, 229), (143, 98, 196, 229), (143, 98, 196, 229), (143, 98, 196, 229), (151, 279, 209, 445), (151, 279, 209, 445), (151, 279, 209, 445), (151, 279, 209, 445), (151, 279, 209, 445), (151, 279, 209, 445), (151, 279, 209, 445), (151, 279, 209, 445), (151, 279, 209, 445), (151, 279, 209, 445), (151, 279, 209, 445), (151, 279, 209, 445), (151, 279, 209, 445), (151, 279, 209, 445), (151, 279, 209, 445), (151, 279, 209, 445), (151, 279, 209, 445), (151, 279, 209, 445), (151, 279, 209, 445), (151, 279, 209, 445), (151, 279, 209, 445), (151, 279, 209, 445), (151, 279, 209, 445), (151, 279, 209, 445), (151, 279, 209, 445), (151, 279, 209, 445), (151, 279, 209, 445), (151, 279, 209, 445), (151, 279, 209, 445), (151, 279, 209, 445), (25, 285, 82, 373), (25, 285, 82, 373), (25, 285, 82, 373), (25, 285, 82, 373), (25, 285, 82, 373), (25, 285, 82, 373), (25, 285, 82, 373), (25, 285, 82, 373), (25, 285, 82, 373), (25, 285, 82, 373), (25, 285, 82, 373), (25, 285, 82, 373), (25, 285, 82, 373), (25, 285, 82, 373), (25, 285, 82, 373), (25, 285, 82, 373), (25, 285, 82, 373), (25, 285, 82, 373), (25, 285, 82, 373), (25, 285, 82, 373), (25, 285, 82, 373), (25, 285, 82, 373), (25, 285, 82, 373), (25, 285, 82, 373), (25, 285, 82, 373), (25, 285, 82, 373), (25, 285, 82, 373), (25, 285, 82, 373), (25, 285, 82, 373), (25, 285, 82, 373), (87, 291, 162, 350), (87, 291, 162, 350), (87, 291, 162, 350), (87, 291, 162, 350), (87, 291, 162, 350), (87, 291, 162, 350), (87, 291, 162, 350), (87, 291, 162, 350), (87, 291, 162, 350), (87, 291, 162, 350), (87, 291, 162, 350), (87, 291, 162, 350), (87, 291, 162, 350), (87, 291, 162, 350), (87, 291, 162, 350), (87, 291, 162, 350), (87, 291, 162, 350), (87, 291, 162, 350), (87, 291, 162, 350), (87, 291, 162, 350), (87, 291, 162, 350), (87, 291, 162, 350), (87, 291, 162, 350), (87, 291, 162, 350), (87, 291, 162, 350), (87, 291, 162, 350), (87, 291, 162, 350), (87, 291, 162, 350), (87, 291, 162, 350), (87, 291, 162, 350), (507, 83, 535, 226), (507, 83, 535, 226), (507, 83, 535, 226), (507, 83, 535, 226), (507, 83, 535, 226), (507, 83, 535, 226), (507, 83, 535, 226), (507, 83, 535, 226), (507, 83, 535, 226), (507, 83, 535, 226), (507, 83, 535, 226), (507, 83, 535, 226), (507, 83, 535, 226), (507, 83, 535, 226), (507, 83, 535, 226), (507, 83, 535, 226), (507, 83, 535, 226), (507, 83, 535, 226), (507, 83, 535, 226), (507, 83, 535, 226), (507, 83, 535, 226), (507, 83, 535, 226), (507, 83, 535, 226), (507, 83, 535, 226), (507, 83, 535, 226), (507, 83, 535, 226), (507, 83, 535, 226), (507, 83, 535, 226), (507, 83, 535, 226), (507, 83, 535, 226), (144, 143, 195, 229), (144, 143, 195, 229), (144, 143, 195, 229), (144, 143, 195, 229), (144, 143, 195, 229), (144, 143, 195, 229), (144, 143, 195, 229), (144, 143, 195, 229), (144, 143, 195, 229), (144, 143, 195, 229), (144, 143, 195, 229), (144, 143, 195, 229), (144, 143, 195, 229), (144, 143, 195, 229), (144, 143, 195, 229), (144, 143, 195, 229), (144, 143, 195, 229), (144, 143, 195, 229), (144, 143, 195, 229), (144, 143, 195, 229), (144, 143, 195, 229), (144, 143, 195, 229), (144, 143, 195, 229), (144, 143, 195, 229), (144, 143, 195, 229), (144, 143, 195, 229), (144, 143, 195, 229), (144, 143, 195, 229), (144, 143, 195, 229), (144, 143, 195, 229), (65, 164, 161, 194), (65, 164, 161, 194), (65, 164, 161, 194), (65, 164, 161, 194), (65, 164, 161, 194), (65, 164, 161, 194), (65, 164, 161, 194), (65, 164, 161, 194), (65, 164, 161, 194), (65, 164, 161, 194), (65, 164, 161, 194), (65, 164, 161, 194), (65, 164, 161, 194), (65, 164, 161, 194), (65, 164, 161, 194), (65, 164, 161, 194), (65, 164, 161, 194), (65, 164, 161, 194), (65, 164, 161, 194), (65, 164, 161, 194), (65, 164, 161, 194), (65, 164, 161, 194), (65, 164, 161, 194), (65, 164, 161, 194), (65, 164, 161, 194), (65, 164, 161, 194), (65, 164, 161, 194), (65, 164, 161, 194), (65, 164, 161, 194), (65, 164, 161, 194), (400, 0, 425, 162), (400, 0, 425, 162), (400, 0, 425, 162), (400, 0, 425, 162), (400, 0, 425, 162), (400, 0, 425, 162), (400, 0, 425, 162), (400, 0, 425, 162), (400, 0, 425, 162), (400, 0, 425, 162), (400, 0, 425, 162), (400, 0, 425, 162), (400, 0, 425, 162), (400, 0, 425, 162), (400, 0, 425, 162), (400, 0, 425, 162), (400, 0, 425, 162), (400, 0, 425, 162), (400, 0, 425, 162), (400, 0, 425, 162), (400, 0, 425, 162), (400, 0, 425, 162), (400, 0, 425, 162), (400, 0, 425, 162), (400, 0, 425, 162), (400, 0, 425, 162), (400, 0, 425, 162), (400, 0, 425, 162), (400, 0, 425, 162), (400, 0, 425, 162), (308, 12, 331, 173), (308, 12, 331, 173), (308, 12, 331, 173), (308, 12, 331, 173), (308, 12, 331, 173), (308, 12, 331, 173), (308, 12, 331, 173), (308, 12, 331, 173), (308, 12, 331, 173), (308, 12, 331, 173), (308, 12, 331, 173), (308, 12, 331, 173), (308, 12, 331, 173), (308, 12, 331, 173), (308, 12, 331, 173), (308, 12, 331, 173), (308, 12, 331, 173), (308, 12, 331, 173), (308, 12, 331, 173), (308, 12, 331, 173), (308, 12, 331, 173), (308, 12, 331, 173), (308, 12, 331, 173), (308, 12, 331, 173), (308, 12, 331, 173), (308, 12, 331, 173), (308, 12, 331, 173), (308, 12, 331, 173), (308, 12, 331, 173), (308, 12, 331, 173), (73, 270, 163, 292), (73, 270, 163, 292), (73, 270, 163, 292), (73, 270, 163, 292), (73, 270, 163, 292), (73, 270, 163, 292), (73, 270, 163, 292), (73, 270, 163, 292), (73, 270, 163, 292), (73, 270, 163, 292), (73, 270, 163, 292), (73, 270, 163, 292), (73, 270, 163, 292), (73, 270, 163, 292), (73, 270, 163, 292), (73, 270, 163, 292), (73, 270, 163, 292), (73, 270, 163, 292), (73, 270, 163, 292), (73, 270, 163, 292), (73, 270, 163, 292), (73, 270, 163, 292), (73, 270, 163, 292), (73, 270, 163, 292), (73, 270, 163, 292), (73, 270, 163, 292), (73, 270, 163, 292), (73, 270, 163, 292), (73, 270, 163, 292), (73, 270, 163, 292), (241, 41, 260, 180), (241, 41, 260, 180), (241, 41, 260, 180), (241, 41, 260, 180), (241, 41, 260, 180), (241, 41, 260, 180), (241, 41, 260, 180), (241, 41, 260, 180), (241, 41, 260, 180), (241, 41, 260, 180), (241, 41, 260, 180), (241, 41, 260, 180), (241, 41, 260, 180), (241, 41, 260, 180), (241, 41, 260, 180), (241, 41, 260, 180), (241, 41, 260, 180), (241, 41, 260, 180), (241, 41, 260, 180), (241, 41, 260, 180), (241, 41, 260, 180), (241, 41, 260, 180), (241, 41, 260, 180), (241, 41, 260, 180), (241, 41, 260, 180), (241, 41, 260, 180), (241, 41, 260, 180), (241, 41, 260, 180), (241, 41, 260, 180), (241, 41, 260, 180), (219, 175, 247, 222), (219, 175, 247, 222), (219, 175, 247, 222), (219, 175, 247, 222), (219, 175, 247, 222), (219, 175, 247, 222), (219, 175, 247, 222), (219, 175, 247, 222), (219, 175, 247, 222), (219, 175, 247, 222), (219, 175, 247, 222), (219, 175, 247, 222), (219, 175, 247, 222), (219, 175, 247, 222), (219, 175, 247, 222), (219, 175, 247, 222), (219, 175, 247, 222), (219, 175, 247, 222), (219, 175, 247, 222), (219, 175, 247, 222), (219, 175, 247, 222), (219, 175, 247, 222), (219, 175, 247, 222), (219, 175, 247, 222), (219, 175, 247, 222), (219, 175, 247, 222), (219, 175, 247, 222), (219, 175, 247, 222), (219, 175, 247, 222), (219, 175, 247, 222), (219, 175, 247, 207), (219, 175, 247, 207), (219, 175, 247, 207), (219, 175, 247, 207), (219, 175, 247, 207), (219, 175, 247, 207), (219, 175, 247, 207), (219, 175, 247, 207), (219, 175, 247, 207), (219, 175, 247, 207), (219, 175, 247, 207), (219, 175, 247, 207), (219, 175, 247, 207), (219, 175, 247, 207), (219, 175, 247, 207), (219, 175, 247, 207), (219, 175, 247, 207), (219, 175, 247, 207), (219, 175, 247, 207), (219, 175, 247, 207), (219, 175, 247, 207), (219, 175, 247, 207), (219, 175, 247, 207), (219, 175, 247, 207), (219, 175, 247, 207), (219, 175, 247, 207), (219, 175, 247, 207), (219, 175, 247, 207), (219, 175, 247, 207), (219, 175, 247, 207), (281, 282, 332, 300), (281, 282, 332, 300), (281, 282, 332, 300), (281, 282, 332, 300), (281, 282, 332, 300), (281, 282, 332, 300), (281, 282, 332, 300), (281, 282, 332, 300), (281, 282, 332, 300), (281, 282, 332, 300), (281, 282, 332, 300), (281, 282, 332, 300), (281, 282, 332, 300), (281, 282, 332, 300), (281, 282, 332, 300), (281, 282, 332, 300), (281, 282, 332, 300), (281, 282, 332, 300), (281, 282, 332, 300), (281, 282, 332, 300), (281, 282, 332, 300), (281, 282, 332, 300), (281, 282, 332, 300), (281, 282, 332, 300), (281, 282, 332, 300), (281, 282, 332, 300), (281, 282, 332, 300), (281, 282, 332, 300), (281, 282, 332, 300), (281, 282, 332, 300), (286, 286, 331, 299), (286, 286, 331, 299), (286, 286, 331, 299), (286, 286, 331, 299), (286, 286, 331, 299), (286, 286, 331, 299), (286, 286, 331, 299), (286, 286, 331, 299), (286, 286, 331, 299), (286, 286, 331, 299), (286, 286, 331, 299), (286, 286, 331, 299), (286, 286, 331, 299), (286, 286, 331, 299), (286, 286, 331, 299), (286, 286, 331, 299), (286, 286, 331, 299), (286, 286, 331, 299), (286, 286, 331, 299), (286, 286, 331, 299), (286, 286, 331, 299), (286, 286, 331, 299), (286, 286, 331, 299), (286, 286, 331, 299), (286, 286, 331, 299), (286, 286, 331, 299), (286, 286, 331, 299), (286, 286, 331, 299), (286, 286, 331, 299), (286, 286, 331, 299), (463, 252, 487, 283), (463, 252, 487, 283), (463, 252, 487, 283), (463, 252, 487, 283), (463, 252, 487, 283), (463, 252, 487, 283), (463, 252, 487, 283), (463, 252, 487, 283), (463, 252, 487, 283), (463, 252, 487, 283), (463, 252, 487, 283), (463, 252, 487, 283), (463, 252, 487, 283), (463, 252, 487, 283), (463, 252, 487, 283), (463, 252, 487, 283), (463, 252, 487, 283), (463, 252, 487, 283), (463, 252, 487, 283), (463, 252, 487, 283), (463, 252, 487, 283), (463, 252, 487, 283), (463, 252, 487, 283), (463, 252, 487, 283), (463, 252, 487, 283), (463, 252, 487, 283), (463, 252, 487, 283), (463, 252, 487, 283), (463, 252, 487, 283), (463, 252, 487, 283), (14, 272, 33, 280), (14, 272, 33, 280), (14, 272, 33, 280), (14, 272, 33, 280), (14, 272, 33, 280), (14, 272, 33, 280), (14, 272, 33, 280), (14, 272, 33, 280), (14, 272, 33, 280), (14, 272, 33, 280), (14, 272, 33, 280), (14, 272, 33, 280), (14, 272, 33, 280), (14, 272, 33, 280), (14, 272, 33, 280), (14, 272, 33, 280), (14, 272, 33, 280), (14, 272, 33, 280), (14, 272, 33, 280), (14, 272, 33, 280), (14, 272, 33, 280), (14, 272, 33, 280), (14, 272, 33, 280), (14, 272, 33, 280), (14, 272, 33, 280), (14, 272, 33, 280), (14, 272, 33, 280), (14, 272, 33, 280), (14, 272, 33, 280), (14, 272, 33, 280)]

将其同时进行可视化:

def draw_bboxes(image, bboxes, color = "red", thickness = 2):
    draw = ImageDraw.Draw(image)
    for bbox in bboxes:
        bbox = tuple(map(int, bbox))  # 将浮点数类型的坐标转换为整数类型
        draw.rectangle(bbox, outline=color, width=thickness)
    del draw

def draw_bboxes_2(image, bboxes, color = "blue", thickness = 1):
    draw = ImageDraw.Draw(image)
    for bbox in bboxes:
        bbox = tuple(map(int, bbox))  # 将浮点数类型的坐标转换为整数类型
        draw.rectangle(bbox, outline=color, width=thickness)
    del draw

# 示例用法
image_path = "demo.jpg"
bboxes = [
    (236, 41, 263, 180), (218, 174, 248, 207), (306, 10, 332, 175), (396, 0, 426, 162),
    (189, 281, 528, 512), (255, 293, 388, 512), (193, 285, 302, 476),
    (146, 280, 213, 445), (339, 113, 450, 229), (406, 49, 508, 177), (499, 82, 537, 229),
    (521, 0, 683, 167), (5, 281, 88, 389), (162, 275, 212, 366), (10, 79, 67, 235),
    (142, 97, 196, 234), (325, 275, 533, 411), (65, 82, 154, 165), (462, 251, 488, 285),
    (422, 277, 502, 286), (501, 254, 512, 290), (511, 255, 521, 288), (532, 151, 676, 451),
    (61, 171, 163, 198), (64, 268, 166, 291), (83, 291, 166, 377), (502, 254, 520, 283),
    (11, 250, 32, 273), (12, 272, 34, 282), (288, 284, 332, 301)
]

image = Image.open(image_path).convert("RGB")
draw_bboxes(image, bboxes)
draw_bboxes_2(image, selected_bboxes)

image.show()

输出结果为:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/649878.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

精雕细琢,Smartbi电子表格软件重构、新增、完善

Smartbi SpreadSheet电子表格软件自发布以来,我们一直关注着用户的诉求,也在不断地对产品进行改进和优化,确保产品能够持续满足用户需求。经过一段时间的努力,产品在各方面都有了明显的改进,接下来,让我们一…

全网最详细的postman接口测试教程,一篇文章满足你

1、前言   之前还没实际做过接口测试的时候呢,对接口测试这个概念比较渺茫,只能靠百度,查看各种接口实例,然后在工作中也没用上,现在呢是各种各样的接口都丢过来,总算是有了个实际的认识。因为只是接口的…

不写单元测试的我,被批了 ,怎么说?

我是凡哥,一年CRUD经验用十年的markdown程序员👨🏻‍💻常年被誉为职业八股文选手 最近在看单元测试的东西,想跟大家聊聊我的感受。单元测试这块说实在的,我并不太熟悉,我几乎不写单元测试&…

k8s 的 Deployment控制器

1. RS与RC与Deployment关联 RC(Replication Controller)主要作用就是用来确保容器应用的副本数始终保持在用户定义的副本数。即如果有容器异常退出,会自动创建新的pod来替代;而如果异常多出来的容器也会自动回收。K8S官方建议使用…

JDBC BasicDAO详解(通俗易懂)

目录 一、前言 二、BasicDAO的引入 1.为什么需要BasicDAO? 2.BasicDAO示意图 : 三、BasicDAO的分析 1.基本说明 : 2.简单设计 : 四、BasicDAO的实现 0.准备工作 : 1.工具类 : 2.JavaBean类 : 3.BasicDAO类 / StusDAO类 : 4.测试类 : 一、前言 第七节内容…

一文读懂物联网平台如何搞定80%以上的物联网项目

太卷了!一套物联网平台就能搞定80%以上的项目?! 在刚刚结束的AIRIOT4.0物联网平台发布会上,航天科技控股集团股份有限公司智慧物联事业部总经理田淼给出答案。 在主题演讲环节,田总以【80%的物联网项目服务商都会面临…

分组函数group by使用技巧

一、需求:获取销售版本组合 颜色(属性名) (黑色,白色…) 属性值集合 Datapublic static class ItemSaleAttrsVo{private Long attrId;private String attrName;//当前属性有多少种版本:黑色,白色,蓝色,这里…

奇妙敏捷之旅·青岛站,真的太酷啦!

高手的世界里,一块小小的积木,也能立刻感受敏捷的乐趣! 2023奇妙敏捷之旅青岛站,希望将理论知识、实践应用融入互动过程,实现思维的交流、碰撞以及面对面的沟通。因此,大家看到的奇妙敏捷之旅的现场&#…

Linux:课后习题及其答案

第一章 Linux系统初步了解 Q1:简述Linux系统的应用领域 Linux服务器、嵌入式Linux系统、软件开发平台、桌面应用 Q2:Linux系统的特点 开放性、多用户、多任务、良好的用户界面、设备独立性、丰富的网络功能、可靠的系统安全、良好的可移植性 Q3&#…

oracle19c rac、nfs部署教程

本文基于19c进行部署,使用centos7.9,nfs做共享存储 一、首先进行网络规划和配置 该实验一共三台机器一台是nfs,另外两台做rac 1.每台机器至少2块网卡,网卡名字必须一样(publicip和VIP使用的是同一张网卡,privilegeip是另外一张网卡改ip 仅做r…

C语言中断言库与断言函数assert()的用法总结

断言库与断言函数的相关使用总结! 断言函数的使用断言函数及断言库总结#define NDEBUG 断言函数在实现常见算法中的使用 断言函数的使用 话不多说,先来个例子感受一番断言函数assert()到底有什么功能。 由上面例子可知,assert()函数中在z的…

快速开发框架:一招解锁企业流程化管理!

在流程化管理时代,什么样的平台可以帮助企业实现高效率发展?在信息化爆炸式发展的今天,有很多企业期望能通过专用的快速开发框架实现提质增效发展。目前,低代码技术平台是较为盛行的平台,拥有易操作、灵活、增效等优势…

AntDB数据库灾备方案介绍

AntDB灾备方案(双中心方案) AntDB数据库节点分布于两个机房,并使用 patroni etcd 组件进行HA管理,主节点故障时能自动切换。切换时优先选择同机房的同步slave节点选举为new master。 部署图中相关组件说明: ⚫patroni:通过参…

Revit中楼梯该怎么画?包教包会!

绘制楼梯是室内装修中必不可少的一部分,因为楼梯的安装不仅仅是为了连接不同楼层,更是装饰整个室内空间的重要组成部分。 在楼梯的绘制过程中,需要结合实际情况进行设计,包括楼层高度、楼梯数量、台阶宽度、扶手高度等因素&#…

AntDB数据冷热分离方案

数据冷热分离 数据的存在价值,在于其被使用的程度,即被查询或更新的频率。在不同的业务系统中,人们对处于不同时期的数据有着不同的使用需求。比如,在网络流量行为分析系统中,客户会对最近一个月公司发生的安全事件和…

树莓派系统卸载桌面环境及系统瘦身

在我们刚入门树莓派时使用都是带桌面环境的系统,系统自带了非常多的实用软件,在学习和使用了一段时间后,我发现已经完全用不到桌面环境了,平时几乎都是通过 ssh 远程工具进行交互,并以命令形式来对系统进行操作。 Ras…

PHP日期时间函数date() 详解

**date()函数是我们在php开发中常碰到并且会使用到的一个日期函数,下面我来给大家介绍date()函数的一些基本扮靓和方法,有需要了解的朋友可进入参考. 日期时间函数是PHP 的核心组成部分。无需安装即可使用这些函数。下面来详细说说date函数的具体用法&a…

Python(request)爬虫有多强大?

requests是Python中的一种HTTP客户端库,用于发送HTTP请求并获取服务器响应。使用requests库可以轻松地进行常见的HTTP操作,如GET、POST、PUT、DELETE等,支持HTTPS和HTTP连接以及摘要验证、基本认证等身份验证方式。 因此,Python的…

嵌入式QT 树形浏览 - navListView

目录 1、什么是树形浏览 2、示例 3、树形浏览设计依赖文件 4、navListView 使用过程 4.1 添加文件 4.2 QListView提升为树形浏览 4.3 树形浏览设计 4.4 树形浏览功能实现 4.5 界面切换 4.6 树形浏览实现界面切换 1、什么是树形浏览 像下图这种左侧带有可以点击切换…

“小白“如何理解数据库

目录 前言 1.什么是数据库 2.数据库的用处 2.1数据库与文件的对比 3.使用数据库 3.1建立数据库 3.2建立表 3.3存储数据 4.服务器,数据库,表关系 5.数据库的分类 5.1MySQL架构 5.2SQL分类 5.3存储引擎 5.3.1什么是存储引擎 5.3.2如何查看存…