☰
labelImg安装与标注全流程:从环境配置到YOLO格式输出
2026/10/19 5:52:33 网站建设 项目流程

简介:LabelImg-master.zip 是一款面向计算机视觉从业者与深度学习入门者的开源图像标注工具源码包,主要用于为神经网络训练准备高质量数据集。它提供直观的图形界面,支持矩形框、多边形等多种标注方式,标注结果可保存为 XML 或 JSON 格式,方便导入对象检测、语义分割等 CNN 模型训练流程,非编程背景人员也能快速上手。压缩包共 108 个文件,约 6.29MB,以 27 个 py 源码文件、39 个 png 界面素材、6 个 sh 脚本及 rst、md 说明文档为主,另含配置文件与图标资源,结构完整便于二次开发。资源内附安装方法与常见错误解决说明,涵盖环境准备、依赖安装及版本兼容排错思路。目前已有 425 人学习下载,适合希望快速搭建标注环境、理解工具实现原理并投入实际标注工作的读者参考使用。

1. 图片标注工具 labelImg 安装:从解压到跑通第一个标注框

labelImg 这个工具,做神经网络和人工智能方向的人几乎绕不开。它是个用 Python 写的图片标注工具,专门给目标检测任务画框、打标签,输出 PASCAL VOC 的 XML 或者 YOLO 的 TXT 格式。你拿到的是labelImg-master.zip这个源码包,不是 exe,也不是 pip 一条命令就能完事的轮子——这意味着你得自己把 Python 环境、依赖库、启动入口这几块拼起来。我见过太多人卡在No module named 'libs'或者 Qt 界面弹不出来,最后放弃转去用网页版标注。这篇就按我实际装机的顺序,把环境列清、把命令写死、把翻车点标出来,让你从解压一路走到能画框。

2. 装之前先把环境定死:Python 版本和依赖库的选择

2.1 为什么 Python 3.9 是我推荐的版本

labelImg 对 Python 版本不算挑剔,但 Qt 绑定库 PyQt5 挑。Python 3.10 以上在某些系统上装 PyQt5 会碰到 wheel 缺失,得现场编译,编译又要 Qt 开发头文件,一环套一环。我一般直接锁 Python 3.8 到 3.9,这两个版本 PyQt5 的预编译 wheel 最全,pip 装完就能用。如果你机器上已经有 3.11 或 3.12,别硬扛,用 conda 单独开一个 3.9 的环境,比事后修依赖省事得多。

# 用 conda 建一个干净的 3.9 环境,名字叫 labelimg conda create -n labelimg python=3.9 -y # 激活环境,后续所有操作都在这个环境里做 conda activate labelimg # 确认当前 python 指向的是 3.9 python --version

这里-n labelimg是给环境起名,方便后面conda activate找回;-y是跳过确认直接建。建完必须激活,否则你 pip 装的东西全进 base 环境,跟 labelImg 没关系。python --version是验证步骤,输出不是 3.9.x 就说明激活没生效,后面必翻车。

2.2 依赖库清单和安装顺序

labelImg 的依赖不复杂,核心就四个:PyQt5 负责界面,lxml 负责解析和生成 XML,Pillow 负责读图,另外还有一个libs目录是源码自带的,不用 pip 装但路径必须对。安装顺序有讲究——先装 PyQt5,再装其余,因为 PyQt5 体积大、下载慢,先装它能尽早暴露网络问题。

# 先装 PyQt5,指定 5.15 这个稳定分支 pip install PyQt5==5.15.9 # 再装 lxml 和 Pillow pip install lxml Pillow # 验证三个库都能正常导入 python -c "from PyQt5 import QtWidgets; import lxml; import PIL; print('deps ok')"

PyQt5==5.15.9这个版本号是我试过和 labelImg 兼容性最好的,再新的 5.15.10 在某些 Linux 发行版上会报 xcb 插件加载失败。lxml不指定版本,pip 会拉最新,一般没问题。最后那句python -c是导入自检,输出deps ok才算过。如果报ImportError: libGL.so.1,那是系统缺 OpenGL 运行库,Ubuntu 下apt install libgl1就能补上,这属于系统层依赖,pip 管不了。

2.3 解压源码包和目录结构确认

labelImg-master.zip解压后是一个labelImg-master文件夹,里面有几个关键文件你得认识:labelImg.py是主入口,libs/目录放的是工具函数和画布逻辑,resources.py是 Qt 资源文件。很多人解压完直接python labelImg.py,结果报ModuleNotFoundError: No module named 'libs',原因就是工作目录不对——必须在labelImg-master这一层执行,不能在它的上级目录执行。

# 解压,unzip 后得到 labelImg-master 目录 unzip labelImg-master.zip # 进入源码根目录,这一步不能省 cd labelImg-master # 看一眼目录里有没有 labelImg.py 和 libs 文件夹 ls

cd labelImg-master是保证 Python 能把当前目录当模块搜索路径的起点。ls是确认解压完整,正常应该看到labelImg.py、libs、resources.py、README.md这些。如果libs不在,说明压缩包没解压全,重新解一次。

3. 启动 labelImg:三种启动方式和参数配置

3.1 最直接的启动命令和首次运行现象

环境齐了、目录对了,启动就是一行命令的事。但首次启动会有个现象:终端会打印一堆 Qt 的警告,比如QStandardPaths: XDG_RUNTIME_DIR not set,这些是 Linux 桌面环境变量缺失导致的,不影响功能,可以忽略。真正要盯的是有没有弹出那个灰底的标注窗口。

# 在 labelImg-master 目录下执行 python labelImg.py

这条命令会加载labelImg.py,它内部再 importlibs里的模块,最后调QtWidgets.QApplication起界面。如果窗口没弹但终端没报错,多半是 Qt 平台插件没找到,加一个环境变量export QT_QPA_PLATFORM=xcb再试。如果报cannot import name 'uic',那是 PyQt5 装得不全,重装pip install PyQt5==5.15.9 --force-reinstall。

3.2 带参数启动:预定义标签和保存格式

labelImg 支持命令行传参,最有用的是--labels和--save-format。--labels可以预加载一个标签列表文件,每行一个类别名,省得你每次开工具手动敲。--save-format决定输出是 VOC XML 还是 YOLO TXT,做 YOLO 训练的话直接设成 yolo,省去后期转换。

# 预加载标签文件,并指定保存为 YOLO 格式 python labelImg.py --labels classes.txt --save-format yolo

classes.txt是你自己建的纯文本文件,内容比如person、car、dog各占一行。--save-format yolo会让标注结果存成同名的.txt,每行是类别索引 中心x 中心y 宽 高的归一化数值。注意这个参数只在启动时生效,运行中在界面右下角也能切换,但切换后已画的框不会自动转格式,得重新保存。

3.3 用 pip 方式安装的替代路径

如果你不想每次cd到源码目录再python labelImg.py,可以在源码目录里执行pip install .,它会读setup.py把 labelImg 装成一个命令行工具。装完在任何目录敲labelImg就能启动。但这条路有个坑:pip install .不会把libs目录复制到 site-packages,它靠的是setup.py里的packages声明,如果声明不全,装完启动会报找不到模块。我一般还是用源码目录直接跑,可控。

# 在 labelImg-master 目录下执行,装成全局命令 pip install . # 装完后在任意目录测试 labelImg --help

pip install .后面的点代表当前目录,它会找setup.py。labelImg --help能打出参数列表就说明装成功了。如果报ModuleNotFoundError,别折腾,退回源码目录启动方式,省时间。

4. 避坑与排查:装 labelImg 最常见的五个翻车点

4.1 报错 No module named 'libs'

现象是终端抛出ModuleNotFoundError: No module named 'libs',界面根本起不来。原因九成是工作目录不对——你在labelImg-master的上级目录执行了python labelImg-master/labelImg.py,Python 把上级目录当搜索路径,自然找不到libs。解决就是cd labelImg-master再执行,或者用python -m方式指定路径。我习惯在启动前先pwd确认一眼,这个动作救过我很多次。

4.2 Qt 界面弹不出来或报 xcb 错误

现象是命令执行后终端没报错,但窗口不出现,或者报qt.qpa.plugin: Could not load the Qt platform plugin "xcb"。原因是系统缺 xcb 相关库,常见于最小化安装的 Linux 或者容器环境。解决分两步:先apt install libxcb-xinerama0 libxcb-cursor0补库,再export QT_DEBUG_PLUGINS=1看具体缺哪个插件。如果是在无显示器的服务器上跑,那本来就不该起图形界面,得用带桌面的环境或者 X11 转发。

4.3 标注保存后 XML 内容为空

现象是画了框、点了保存,打开 XML 发现<object>节点是空的。原因是保存时没选中任何框,或者框的标签没填。labelImg 的逻辑是:只有当前高亮的框才会被写入。解决是保存前按Ctrl+S之前先点一下画好的框,确认它变成蓝色高亮,再保存。另外标签列表里如果没选类别,框会存成undefined,训练时直接报错,所以classes.txt一定要提前准备好。

4.4 图片列表加载不出来或显示灰色

现象是打开图片目录后左侧列表是空的,或者图片名是灰色点不动。原因是目录里混了非图片文件,或者图片格式 labelImg 不支持。它默认只认.jpg、.png、.bmp这几种。解决是把非图片文件挪走,或者启动时加--file-list指定一个图片路径列表文件。另外图片路径里如果有中文或空格,某些版本会解析失败,尽量用纯英文路径。

4.5 pip 装 PyQt5 卡在下载或编译

现象是pip install PyQt5卡在Building wheel for PyQt5不动,或者报Failed building wheel。原因是 pip 没找到对应 Python 版本的预编译 wheel,退而去编译源码,编译又缺 Qt 头文件。解决是换 Python 3.9、升级 pip 到最新、或者直接指定--only-binary :all:强制用 wheel。如果还不行,用 conda 装:conda install pyqt=5.15,conda 的包管理对二进制依赖处理得更稳。

5. 装完怎么验证:用一张图跑通标注全流程

装完不算完,得跑一遍完整流程才算数。我一般拿一张测试图,从打开目录到保存 XML,走完这五步,确认工具真的能用。

第一步,准备一个干净目录,放一张.jpg图片和一个classes.txt。目录路径全英文,别带空格。第二步,启动 labelImg 并指定标签文件和保存格式:

python labelImg.py --labels classes.txt --save-format voc

第三步,在界面左侧点Open Dir选中图片目录,图片列表应该立刻出现。第四步,按w键激活画框模式,在图上拉一个矩形,弹出类别选择框,选person。第五步,按Ctrl+S保存,然后去图片同目录看有没有生成同名.xml。

验证 XML 内容是否正确,用这条命令看关键节点:

# 查看生成的 XML 里 object 节点和类别名 grep -E "object|name|bndbox" 测试图.xml

正常输出应该包含<name>person</name>和<bndbox>四个坐标值。如果name是空的,回去检查画框时有没有选类别;如果bndbox坐标全是 0,那是画框时没拉出面积,重新画一个。

再补一个格式转换的验证。如果你要喂给 YOLO 训练,把--save-format换成yolo重新存一次,生成的.txt每行应该是五个数:类别索引、中心 x、中心 y、宽、高,全部归一化到 0 到 1 之间。用cat看一眼:

# 查看 YOLO 格式的标注文件 cat 测试图.txt

输出类似0 0.523 0.441 0.312 0.278,第一个 0 对应classes.txt里person的行号(从 0 开始)。如果这行数字超过 1,说明归一化没生效,多半是保存格式没切对。

从那以后我每次装完 labelImg,都强制走一遍「一张图、一个框、一次保存、一次 grep」的流程,不看到 XML 里那行<name>就不算装完。这套动作花不了两分钟,但能挡住九成的环境问题。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询