Yolo标签可视化

我的目录结构是这样的,yolov5的数据集目录结构
在这里插入图片描述
希望能把标签数据绘制到图片上看看效果,代码如下

from pathlib import Path
from alphabet import alphabet
import pandas as pd
import cv2
import matplotlib.pyplot as plt

alphabet = alphabet.split("\n")

label_root = Path("labels/test")
image_root = Path("images/test")


def paint(label_file,image_file):
    #读取标签
    df = pd.read_csv(label_file,sep=" ",names=['id','center-x','center-y','w','h'])
    df['id'] = df['id'].apply(lambda x:alphabet[x])
    df = df.sort_values(by='center-x')
    #读取图片
    img = cv2.imread(str(image_root/image_file))
    h,w = img.shape[:2]
    
    df[['center-x','w']] = df[['center-x','w']].apply(lambda x:x*w)
    df[['center-y','h']] = df[['center-y','h']].apply(lambda x:x*h)
    
    df['x1'] = df['center-x']-df['w']/2
    df['x2'] = df['center-x']+df['w']/2
    df['y1'] = df['center-y']-df['h']/2
    df['y2'] = df['center-y']+df['h']/2

    df[['x1','x2','y1','y2']] = df[['x1','x2','y1','y2']].astype('int')
    
    points = zip(df['x1'],df['y1'],df['x2'],df['y2'])
    for point in points:
        img = cv2.rectangle(img,point[:2],point[2:],color=(0, 255, 0),thickness=1)
    plt.imshow(img)
    plt.show()

for label_file in label_root.iterdir():
    image_file = label_file.name.replace(".txt",".jpg")
    paint(label_file,image_file)
    break
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
需要学习ubuntu系统上YOLOv4的同学请前往:《YOLOv4目标检测实战:原理与源码解析》 【为什么要学习这门课】 Linux创始人Linus Torvalds有一句名言:Talk is cheap. Show me the code. 冗谈不够,放码过来! 代码阅读是从基础到提高的必由之路。尤其对深度学习,许多框架隐藏了神经网络底层的实现,只能在上层调包使用,对其内部原理很难认识清晰,不利于进一步优化和创新。YOLOv4是最近推出的基于深度学习的端到端实时目标检测方法。YOLOv4的实现darknet是使用C语言开发的轻型开源深度学习框架,依赖少,可移植性好,可以作为很好的代码阅读案例,让我们深入探究其实现原理。【课程内容与收获】 本课程将解析YOLOv4的实现原理和源码,具体内容包括:- YOLOv4目标检测原理- 神经网络及darknet的C语言实现,尤其是反向传播的梯度求解和误差计算- 代码阅读工具及方法- 深度学习计算的利器:BLAS和GEMM- GPU的CUDA编程方法及在darknet的应用- YOLOv4的程序流程- YOLOv4各层及关键技术的源码解析本课程将提供注释后的darknet的源码程序文件。【相关课程】 除本课程《Windows版YOLOv4目标检测:原理与源码解析》外,本人推出了有关YOLOv4目标检测的系列课程,包括:《Windows版YOLOv4目标检测实战:训练自己的数据集》《Windows版YOLOv4-Tiny目标检测实战:训练自己的数据集》《Windows版YOLOv4目标检测实战:人脸口罩佩戴检测》《Windows版YOLOv4目标检测实战:中国交通标志识别》建议先学习一门YOLOv4实战课程,对YOLOv4的使用方法了解以后再学习本课程。【YOLOv4网络模型架构图】 下图由白勇老师绘制  
你可以使用OpenCV库来可视化YOLO格式的数据集并绘制边界框。下面是一个简单的示例代码,可以帮助你完成这个任务: ```python import cv2 import numpy as np def visualize_dataset(image_path, label_path, class_names): image = cv2.imread(image_path) height, width, _ = image.shape with open(label_path, 'r') as f: lines = f.readlines() for line in lines: # 解析边界框信息 class_id, x, y, w, h = map(float, line.split()) class_id = int(class_id) x = int((x - w/2) * width) y = int((y - h/2) * height) w = int(w * width) h = int(h * height) # 绘制边界框 cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2) cv2.putText(image, class_names[class_id], (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 0), 2) cv2.imshow('Image', image) cv2.waitKey(0) cv2.destroyAllWindows() # 设置类别名称和标签路径 class_names = ['person', 'car', 'cat'] # 替换成你的类别名称 label_path = 'path/to/labels.txt' # 替换成你的标签文件路径 image_path = 'path/to/image.jpg' # 替换成你的图像文件路径 # 可视化数据集 visualize_dataset(image_path, label_path, class_names) ``` 在这个示例中,你需要将类别名称、标签文件路径和图像文件路径替换成你自己的路径。确保标签文件的格式与YOLO格式一致,每行包含了一个边界框的类别ID和边界框的中心坐标、宽度和高度。 运行这段代码后,你会看到一个显示了边界框的图像窗口。边界框使用绿色线条绘制在图像上,并显示了对应的类别名称。你可以使用键盘上的任意按键来关闭图像窗口。 希望这个示例能帮助到你!如果有任何疑问,请随时提问。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孤独腹地

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值