当前位置: 首页 > news >正文

labelimg(目标检测标注工具)的安装、使用教程和问题解决

背景

之前做了一个视觉识别的检测算法,有粉丝留言说Labelimg这个工具怎么用,从哪儿弄的,今天就把这个工具做个总结,过程中遇到的问题和注意点一并说一下。

一、什么是labelimg

labelimg是一款开源的图像标注工具,标签可用于分类和目标检测,它是用python写的,并使用Qt作为其图形界面,简单好用(虽然是英文版的)。其注释以 PASCAL VOC格式保存为XML文件,这是ImageNet使用的格式。此外,它还支持 COCO数据集格式。

1.安装

这是一个免费开源的图形化标注软件,像 Photoshop 一样简单!

安装方法(Windows 最简单):

方法1:直接下载免安装版(推荐新手)

👉 下载地址:https://tzutalin.github.io/labelimg/

点击 “Download” → 选 Windows & Python 3 + Qt5 → 下载 zip 包解压后双击运行 labelImg.exe

方法2:命令行安装(稍专业)

 在cmd输入以下命令

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

然后等待其自动帮你安装labelimg以及lxml和pyqt5

2.使用

结束后,在cmd中输入labelimg,启动命令

labelimg

等一会会就会出现labelimg页面

注意:如果上面输入labelimg后,cmd中提示

不是内部或外部命令,也不是可运行的程序或批处理文件。

你可以试试使用everything搜索labelimg.exe。该软件一般在你python目录下的scripts目录中

3.开始标注

打开 LabelImg 后界面如下:

  1. 点击左上角 Open Dir → 选择你存放所有图片的文件夹(比如叫 images/train
  2. 点击 PascalVOC 或 YOLO 格式按钮(先选 PascalVOC 更直观)
  3. 按快捷键 W 开始画框
步骤操作
1️⃣打开一张图,看到连接器位置
2️⃣按 W 键 → 鼠标拖动 → 把整个连接器外露部分框起来(尽量紧贴边缘)
3️⃣弹出对话框输入类别名:<br>✅ 输入 hege 表示“合格”<br>❌ 输入 buhege 表示“不合格”
4️⃣点击 Save → 自动生成一个 .xml 文件

使用说明:

  1) 打开LabelImg后,为了让操作更加方便,先设:
            Auto Save mode:切换到下一张图片的时候,会自动保存标签;

2) 点击Change Save Dir,设置存储位置

 3) 点击切换标注格式的按钮,转换成YOLO格式,也可以用PascalVOC

4) 点击Open Dir打开图片文件夹,之后开始标注。

常用操作快捷键:

一般使用W和D ,这里大家可以去试试,用上快捷键后,标注速度肯定会得到提升

  • A:切换到上一张图片
  • D:切换到下一张图片
  • W:调出标注十字架
  • del :删除标注框框
  • Ctrl+u:选择标注的图片文件夹
  • Ctrl+r:选择标注好的label标签存在的文件夹
  • Ctrl+s:保存

标注结果展示

1.VOC

       

这种的要转换,转换请看第4步

2. YOLO

生成文件如下

4.转换

转换为 YOLO 要的格式(.txt 文件)

得到了一堆 .xml 文件(来自 LabelImg),但 YOLO 模型需要的是 .txt 文件,内容是这种:

<class_id> <x_center> <y_center> <width> <height>

这五个数字到底是什么意思?

假设你的图片大小是 640×480 像素,你画了一个框:

  • 左上角坐标:(100, 200)
  • 右下角坐标:(200, 300)

那么这个框的信息是:

参数计算方式数值
中心点 x(100 + 200)/2 = 150150
中心点 y(200 + 300)/2 = 250250
宽度 w200 - 100 = 100100
高度 h300 - 200 = 100100

再做“归一化”(除以图片宽高):

参数归一化公式结果(保留4位小数)
x_center150 / 640 ≈ 0.23440.2344
y_center250 / 480 ≈ 0.52080.5208
width100 / 640 ≈ 0.15620.1562
height100 / 480 ≈ 0.20830.2083

最后加上类别 ID:

  • 假设 hege → class_id = 0
  • buhege → class_id = 1

所以最终的一行就是:

0 0.2344 0.5208 0.1562 0.2083

这就是一条标准的 YOLO 标注!

https://blog.csdn.net/r502818330/article/details/146043528

完成后可进行后续的yolo训练方面的操作。

labelimg.exe的存放位置
使用everything软件查找labelimg,在目标检测上面,在标注图片上面,了解一些labelimg及其使用还是很有必要的

https://www.cnblogs.com/Dongmy/p/18741639

https://blog.csdn.net/knighthood2001/article/details/125883343

yolov8/yolo11的视觉识别算法使用和详解可以参考博主的这篇文章:

基于yolov8/yolo11的视觉识别算法使用和详解

二、遇到的问题和解决方法

1.TypeError: arguments did not match any overloaded call:

我一开始下载labeling后,每次画框都会闪退,控制台报错类似这种错误:

TypeError: arguments did not match any overloaded call:drawLine(self, l: QLineF): argument 1 has unexpected type 'float'drawLine(self, line: QLine): argument 1 has unexpected type 'float'drawLine(self, x1: int, y1: int, x2: int, y2: int): argument 1 has unexpected type 'float'drawLine(self, p1: QPoint, p2: QPoint): argument 1 has unexpected type 'float'drawLine(self, p1: Union[QPointF, QPoint], p2: Union[QPointF, QPoint]): argument 1 has unexpected type 'float'

后来经过网上搜索发现,这个版本可能有问题,问题的具体是在 paintEvent 方法中调用 drawLine 函数时传入了浮点数参数,而 drawLine 函数期望的是整数类型

这表明 drawLine 方法的所有重载版本都期望整数类型的坐标值,但实际传入的是浮点数。通常情况下,这是由于坐标值没有被正确地转换为整数导致的。

解决方案

要解决这个问题,你需要修改 canvas.py 文件中的相关代码,确保在调用 drawLine 方法之前将所有浮点数坐标值转换为整数。以下是具体的步骤:

修改 canvas.py 文件

找到 canvas.py 文件中的第 530 行,该行代码是这样的:

if self.drawing() and not self.prev_point.isNull() and not self.out_of_pixmap(self.prev_point):p.setPen(QColor(0, 0, 0))p.drawLine(self.prev_point.x(), 0, self.prev_point.x(), self.pixmap.height())p.drawLine(0, self.prev_point.y(), self.pixmap.width(), self.prev_point.y())

修改为:

p.drawLine(int(self.prev_point.x()), 0, int(self.prev_point.x()), int(self.pixmap.height()))
p.drawLine(0, int(self.prev_point.y()), int(self.pixmap.width()), int(self.prev_point.y()))

完成上述修改后,保存 canvas.py 文件,并重新启动 LabelImg。如果一切正常,你应该不会再遇到之前的错误。

注:这里面类似的报错挺多的,但是改法都大同小异参考这个int() 改法处理即可

今天的分享就到这里了,等遇到其他问题接着收集,有相关问题可以和博主交流,竭尽所能去处理

http://www.dtcms.com/a/406799.html

相关文章:

  • 【MFC】项目结构梳理
  • 中小企业声音克隆技术落地实践:痛点分析与轻量化解决方案建议
  • High precision single-photon object detection via deep neural networks,OE2024
  • 网站编程入门php做外贸网站好吗
  • 网站制作排名php自己写框架做网站
  • VMware+RockyLinux+ikuai+docker+cri-docker+k8s 自用 实践笔记(二)
  • Lambda
  • html网站开发代码公司网页设计实例教程
  • MySQL异步I/O性能优化全解析
  • SQL 执行计划解析:从 EXPLAIN 到性能优化的完整指南
  • jupyter notebook继续学习
  • 力扣2381. 字母移位 II
  • 平和县建设局网站安徽经工建设集团网站
  • Vue 配置代理
  • CatCTF2022 web wp
  • 知乎免费阅读网站石家庄新闻综合频道节目回看
  • 做网站后台主要负责什么最新室内装修风格图片
  • 机器人行业灵巧手专题研究报告
  • hive SQL查询与函数
  • 网站维护 关站 seo百度首页广告
  • 搜索引擎的网站有哪些网页设计与网站建设 倪宝童
  • Prompt Optimizer 提示词优化器安装使用
  • 淘宝网站建设的优点app推广是什么工作
  • 【C++】23. C++11(上)
  • 第三方软件登记测评机构:【LoadRunner脚本录制与调试】
  • 摄影网站开发的背景西安网站 技术支持牛商网
  • A股大盘数据-20250925分析
  • 旋转设备状态监测传感器选型要点
  • echarts项目积累
  • VS2022调试技巧