可视化标注的目标检测框(gt box)

1.代码:

Yy.py文件:

import cv2
import numpy as np

def get_color(idx):
    idx = idx * 3
    color = ((37 * idx) % 255, (17 * idx) % 255, (29 * idx) % 255)
    return color

def plot_tracking(image, tlwhs, obj_ids, scores=None, frame_id=0, fps=0., ids2=None):
    if image is None:
        raise ValueError("Image is None. Check if the image path is correct and the image is loaded properly.")

    im = np.ascontiguousarray(np.copy(image))

    # 检查图像是否为单通道并调整形状
    if len(im.shape) == 2:
        im_h, im_w = im.shape
        im = cv2.cvtColor(im, cv2.COLOR_GRAY2BGR)  # 将单通道图像转换为三通道
    else:
        im_h, im_w, _ = im.shape

    im = np.ascontiguousarray(np.copy(image))
    im_h, im_w = im.shape[:2]

    text_scale = 1.0
    text_thickness = 1
    line_thickness = 2

    for i, tlwh in enumerate(tlwhs):
        x1, y1, w, h = tlwh
        x2, y2 = x1 + w, y1 + h
        color = get_color(i)  # 为每个对象生成一个颜色
        cv2.rectangle(im, (int(x1), int(y1)), (int(x2), int(y2)), color, line_thickness)

        id_text = str(obj_ids[i])
        if scores is not None:
            id_text += f' ({scores[i]:.2f})'
        if ids2 is not None:
            id_text += f', {ids2[i]}'

        cv2.putText(im, id_text, (int(x1), int(y1) - 10), cv2.FONT_HERSHEY_SIMPLEX, text_scale, color, text_thickness)

    return im

Nn.py文件: 

import os

import cv2

from Yy import plot_tracking

# 示例图像路径
image_path = 'D:/data/00001860.jpg'  # 确保路径和文件名是正确的

# 尝试加载图像
image = cv2.imread(image_path)

# 检查图像是否加载成功
if image is None:
    print(f"无法加载图像,请检查路径是否正确:{image_path}")
else:
    # 准备跟踪数据
    tlwhs = [(676,355,41,133),(1162,364,24,26),(1269,361,40,121),(470,704,107,275),(517,348,25,59),(452,627,80,280)]  # 示例边界框数据
    obj_ids = [25,26,27,29,31,32]  # 示例对象ID

    # 调用函数来绘制跟踪信息
    output_image = plot_tracking(image, tlwhs, obj_ids)

    # 获取原始文件的文件名(不包括扩展名)
    file_name_without_extension = os.path.splitext(os.path.basename(image_path))[0]
    # 显示图像
    cv2.imshow('Tracking Visualization', output_image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

    # 指定输出文件夹和文件名
    output_dir = 'out'
    output_file = file_name_without_extension + '.jpg'
    output_path = os.path.join(output_dir, output_file)

    # 检查输出文件夹是否存在,如果不存在,则创建
    if not os.path.exists(output_dir):
        os.makedirs(output_dir)

    # 保存图像
    cv2.imwrite(output_path, output_image)

2.步骤

准备工作:创建代码、获取检测框标注文本、获取每一帧解码的图片

以上诉代码为例:

  • 首先在Nn.py中修改图片路径和检测框的(x,y,h,w)、ID.
  1. 图片路径:00001860.jpg(第00001860帧)-----Nn.py中修改:
image_path = 'D:/data/00001860.jpg' 

       2.标注信息:在.txt中获取相应帧(1860帧)的box信息------Nn.py中修改:

(1860:帧,25:ID,(676,355,41,133):检测框的位置信息) 

# 准备跟踪数据
    tlwhs = [(676,355,41,133),(1162,364,24,26),(1269,361,40,121),(470,704,107,275),(517,348,25,59),(452,627,80,280)]  # 示例边界框数据
    obj_ids = [25,26,27,29,31,32]  # 示例对象ID
  • 修改完Nn.py后,运行Nn.py,将结果就保存到了'out'文件夹中,文件夹中会生成00001860.jpg,该图片上就会标注出ID为(25,26,27,29,31,32),五个检测框。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值