【数据标注】使用LabelImg标注YOLO格式的数据(案例演示)

news2025/2/26 18:53:33

文章目录

    • LabelImg介绍
    • LabelImg安装
    • LabelImg界面
    • 标注常用的快捷键
    • 标注前的一些设置
    • 案例演示
    • 检查YOLO标签中的标注信息是否正确
    • 参考文章


LabelImg介绍

LabelImg是目标检测数据标注工具,可以标注两种格式:

  • VOC标签格式,标注的标签存储在xml文件
  • YOLO标签格式,标注的标签存储在txt文件中

LabelImg官网:

labelImg的GitHub链接:https://github.com/HumanSignal/labelImg


LabelImg安装

在Anaconda创建的虚拟环境中使用pip安装LabelImg
1、打开 Anaconda Prompt
2、创建一个虚拟环境

conda create -n use_labelimg python=3.6

3、激活虚拟环境

conda activate use_labelimg

4、使用pip安装LabelImg(有挂代理/梯子记得关掉)

pip install labelimg -i https://pypi.tuna.tsinghua.edu.cn/simple

5、执行以下命令打开LabelImg

labelimg

在这里插入图片描述


LabelImg界面

在这里插入图片描述


标注常用的快捷键

  • W:调出标注的十字架,开始标注
  • A:切换到上一张图片
  • D:切换到下一张图片
  • Ctrl+S:保存标注好的标签
  • del:删除标注的矩形框
  • Ctrl+鼠标滚轮:按住Ctrl,然后滚动鼠标滚轮,可以调整标注图片的显示大小
  • Ctrl+u:选择要标注图片的文件夹
  • Ctrl+r:选择标注好的label标签存放的文件夹
  • ↑→↓←:移动标注的矩形框的位置

标注前的一些设置

点击View显示如下图,然后把如下的几个选项勾上:

  • Auto Save mode:当你切换到下一张图片时,就会自动把上一张标注的图片标签自动保存下来,这样就不用每标注一样图片都按Ctrl+S保存一下了
  • Display Labels:标注好图片之后,会把框和标签都显示出来
  • Advanced Mode:这样标注的十字架就会一直悬浮在窗口,不用每次标完一个目标,再按一次W快捷键,调出标注的十字架。

在这里插入图片描述


案例演示

1、假设在我的 green_plate文件夹 中已经存放了所要进行标注的车牌图片
在这里插入图片描述
2、在 LabelImg界面 通过 Open Dir 导入 green_plate文件夹
在这里插入图片描述
3、在 LabelImg界面 通过 Change Save Dir 选择 存放标注好图片的文件夹路径
在这里插入图片描述

4、在 LabelImg界面 点击 View 进行标注前的一些设置
5、设置标注的文件格式为YOLO
在这里插入图片描述
6、按W键调出标注的十字架,开始标注

可通过Ctrl+鼠标滚轮调整标注图片的显示大小,方便对目标进行标注
在这里插入图片描述

7、对一张图片标注完成后,按D键切换到下一张图片继续标注
8、如果需要对一个标注好的矩形框进行删除,可以按以下图片中的操作进行
在这里插入图片描述
9、重复以上步骤直至所有的图片标注完成
10、在存放标注好图片的文件夹中查看标注好的文件
在这里插入图片描述


检查YOLO标签中的标注信息是否正确

通过读取图像文件和相应的标签文件来绘制边界框,并在窗口中显示带有边界框的图像。
如果边界框的位置和大小与预期相符,那么可以认为YOLO格式的标签是正确的。

"""
文件名: CheckYOLOLabels.py
功能描述: 检查YOLO标签中的标注信息是否正确
"""

import os
import cv2
import matplotlib.pyplot as plt
import numpy as np

def listPathAllfiles(dirname):
    """
    遍历指定目录下的所有文件并返回一个包含这些文件路径的列表。
    """
    result = []
    for maindir, subdir, file_name_list in os.walk(dirname):
        for filename in file_name_list:
            apath = os.path.join(maindir, filename)
            result.append(apath)
    return result

if __name__ == '__main__':
    # YOLO图片文件的保存路径
    imagespath = "DeepLearningProjects\\green_plate"
    
    # YOLO标签文件的保存路径
    labelspath = "DeepLearningProjects\\process_green_plate"


    # 获取所有标签文件的路径
    labelsFiles = listPathAllfiles(labelspath)

    # 逆序遍历标签文件,因为通常最新的文件在最后
    for lbf in labelsFiles[::-1]:
        # 读取标签文件的每一行,并将其分割成一个列表
        labels = open(lbf, "r").readlines()
        labels = list(map(lambda x: x.strip().split(" "), labels))
        # 构造对应的图片文件名
        imgfileName = os.path.join(imagespath, os.path.basename(lbf)[:-4] + ".jpg") # .jpg
        # 从文件中读取图片,cv2.imdecode函数可以将字节流解码为图像
        img = cv2.imdecode(np.fromfile(imgfileName, dtype=np.uint8), 1)

        # 遍历每个标签
        for lbs in labels:
            # 将标签字符串转换为浮点数,并去掉类别索引
            lb = list(map(float, lbs))[1:]
            # 根据标签计算边界框的左上角和右下角坐标
            x1 = int((lb[0] - lb[2] / 2) * img.shape[1])
            y1 = int((lb[1] - lb[3] / 2) * img.shape[0])
            x2 = int((lb[0] + lb[2] / 2) * img.shape[1])
            y2 = int((lb[1] + lb[3] / 2) * img.shape[0])
            # 在图像上绘制边界框
            cv2.rectangle(img, (x1, y1), (x2, y2), (0, 0, 255), 5)

        # 调整图像大小,使其最大边长为600像素
        ratio = 600 / min(img.shape[0:2])
        img = cv2.resize(img, dsize=(int(img.shape[1] * ratio), int(img.shape[0] * ratio)))

        # 显示带有边界框的图像
        cv2.imshow("Image", img)
        # 等待用户按键,按任意键继续
        cv2.waitKey()
        # 关闭所有OpenCV创建的窗口
        cv2.destroyAllWindows()

参考文章

目标检测使用LabelImg标注VOC数据格式和YOLO数据格式——LabelImg使用详细教程

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

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

相关文章

insightface 环境配置

首先创建续集环境: conda create -n insightface3 python3.8 然后打开此虚拟环境:conda activate insightface3 然后安装: pip install insightface 再安装:pip install onnxruntime-gpu 就可以了

零基础俄语培训哪家好,柯桥俄语培训

1、Мощный дух спасает расслабленное тело. 强大的精神可以拯救孱弱的肉体。 2、Единственное правило в жизни, по которому нужно жить — оставаться человеком в лю…

物联网的基本功能及五大核心技术——青创智通

工业物联网解决方案-工业IOT-青创智通 物联网基本功能 物联网的最基本功能特征是提供“无处不在的连接和在线服务”,其具备十大基本功能。 (1)在线监测:这是物联网最基本的功能,物联网业务一般以集中监测为主、控制为…

qml和c++结合使用

目录 文章简介1. 创建qml工程2. 创建一个类和qml文件,修改main函数3. 函数说明:4. qml 文件间的调用5. 界面布局6. 代码举例 文章简介 初学qml用来记录qml的学习过程,方便后面归纳总结整理。 1. 创建qml工程 如下图,我使用的是…

本地Mysql开启远程访问(图文)

目录 1. 问题所示2. 原理分析3. 解决方法 1. 问题所示 事因是访问同事的数据库时,出现无法访问 出现1130 - Host ‘IT07’ is not allowed to connect to this MySQL server截图如下: 2. 原理分析 如果账号密码地址都正常的情况下,这是没开…

SQLite尽如此轻量

众所周知,SQLite是个轻量级数据库,适用于中小型服务应用等,在我真正使用的时候才发现,它虽然轻量,但不知道它却如此轻量。 下载 官网: SQLite Download Page 安装 1、将下载好的两个压缩包同时解压到一个…

基于springboot的高校宣讲会管理系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式 🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 &…

前端工程化Vue使用Node.js永久设置国内高速npm镜像源

前端工程化Vue使用Node.js永久设置国内高速npm镜像源 接续上篇错误收录,此篇通过简单配置永久设置国内高速npm镜像源方法 1.更换新版镜像 清空npm缓存 npm cache clean --force修改回原版镜像源或直接删除配置过的镜像源 npm config set registry https://registr…

pve(Proxmox VE)安装i225v网卡驱动

配置pve源 备份原来的源 mv /etc/apt/sources.list /etc/apt/sources.list.bak打开文件 vi /etc/apt/sources.list将以下内容粘贴进去 deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmwaredeb https://mirrors.tuna.tsing…

2024景区五一游园会活动策划方案

2024景区营地五一发酵面包市集主题游园会(面包狂想曲主题)活动策划方案-59P 方案页码:59页 文件格式:pptx 方案简介: 面包派对 如约而至 你有见过面包发酵的过程吗? 看着面团从手掌大小 不断膨胀到一倍、两倍、…

CLIP论文笔记:Learning Transferable Visual Models From Natural Language Supervision

导语 会议:ICML 2021链接:https://proceedings.mlr.press/v139/radford21a/radford21a.pdf 当前的计算机视觉系统通常只能识别预先设定的对象类别,这限制了它们的广泛应用。为了突破这一局限,本文探索了一种新的学习方法&#x…

校车车载4G视频智能监控系统方案

一、项目背景 随着社会的快速发展,校车安全问题日益受到人们的关注。为了提高校车运营的安全性,保障学生的生命安全,我们提出了一套校车车载4G视频智能监控系统方案。该系统能够实时监控校车内部和外部环境,及时发现并处理潜在的…

全志ARM-网络链接

命令扫描周围的WIFI热点 nmcli dev wifi 命令接入网络 nmcli dev wifi connect (WiFi名,不要有空格)password (WiFi密码) 查看IP地址 ip addr show wlan0或ifconfig 出现successfully就连接成功了

qt5core.dll怎么下载,qt5core.dll丢失能否修复?

qt5core.dll的丢失真是让人头疼。这个Visual C Redistributable for Visual Studio 2015的运行时库被许多程序和游戏所依赖,一旦缺失了qt5core.dll,就会面临无法打开程序或游戏,甚至系统崩溃等一系列问题。 qt5core.dll的消失会带来以下麻烦 …

沉浸式推理乐趣:体验线上剧本杀小程序的魅力

在这个信息爆炸的时代,人们的娱乐方式也在不断地推陈出新。其中,线上剧本杀小程序以其独特的沉浸式推理乐趣,成为了许多人的新宠。它不仅让我们在闲暇之余享受到了推理的快乐,更让我们在虚拟的世界里感受到了人性的复杂与多彩。 线…

可视化大屏对浅色系果断说“不”

可视化大屏拒绝浅色系的原因有以下几点: 对比度不足:浅色系在大屏上可能会导致对比度不足,使得数据和图表的展示不清晰,影响信息的传达和理解。可读性差:浅色系的文字和图表在大屏上可能会显得模糊不清,使…

有什么因素会影响IP稳定性?

IP稳定性指的是IP地址在一段时间内保持不变的能力,对于网络连接的安全性和可靠性至关重要。以下是一些可能影响IP稳定性的主要因素: 网络服务提供商(ISP)的政策:不同的ISP对于IP地址的管理和使用有不同的政策。一些IS…

使用 NVM 动态切node版本

一、安装nvm 官网链接: Release 1.1.9 coreybutler/nvm-windows GitHub 无脑安装直接下一步 安装完之后验证一下: #打开命令行输入命令 nvm 这样就是安装好了,然后我们开始安装node。 二、使用nvm安装node 1、去node官网获取版本号 …

2024年Q1季度洗衣机行业线上市场销售数据分析

Q1季度洗衣机线上市场表现不如预期。 根据鲸参谋数据显示,2024年1月至3月线上电商平台(京东天猫淘宝)洗衣机累计销量约650万件,环比下降14%,同比下降14%;累计销售额约96亿元,环比下降30%&#…

Servlet和Tomcat运作过程

记录一下前后端请求交互过程(不涉及Spring框架): 编写一个UserServlet 在web.xml文件中编写映射路径 编写前端