首页/新闻资讯/正文详情

labelImg 1.8.6 汉化版:Windows 免环境配置的 YOLO 标注工具实战指南

发布时间:2026/9/25 3:16:05 来源:云帆数科 栏目:资讯中心
labelImg 1.8.6 汉化版:Windows 免环境配置的 YOLO 标注工具实战指南
简介labelImg-1.8.6汉化中文版是面向Windows x64平台的目标检测标注工具绿色打包版本适合从事深度学习、计算机视觉数据标注的开发者与初学者使用无需配置Python环境即可直接运行。压缩包共151个文件以85个dll动态库、30个pyd扩展模块和23个qm翻译文件为主另含xsl样式表、txt说明及exe主程序整体约38.72MB解压后双击labelImg.exe即可启动省去环境搭建与依赖安装的繁琐步骤。该版本由作者使用PyInstaller亲自打包内置Qt界面组件与Python运行时仅支持Windows x64系统不适用于Linux和macOS。目前已有1694人学习下载适合需要快速开展图像标注、制作VOC或YOLO格式数据集、验证检测模型训练流程的用户可作为开箱即用的中文标注工具直接投入项目使用。1. 拿到 labelImg-1.8.6 汉化中文版 exe 之后先搞清楚它到底省掉了哪几步如果你做过目标检测数据集大概率在某个深夜被 Python 环境、PyQt5 版本冲突、lxml 编译失败轮番折磨过。labelImg 本身是个很轻的标注工具但它的安装链路对新手并不友好要装 Python、要装 PyQt5、要装 lxmlWindows 上还经常卡在 pip 编译环节。所以当有人把 labelImg-1.8.6 汉化中文版打包成 windows-x64 的 exe 直接发出来时它真正省掉的不是「下载」这一步而是整条环境配置链路。这个 exe 版本适合三类人一是刚入门目标检测、还没建立起 Python 环境管理习惯的新手二是需要在多台 Windows 机器上快速铺开标注工作的团队三是只想标几百张图、不想为工具折腾半天的人。它解决的核心问题是「开箱即用」代价是版本被锁定在 1.8.6且汉化界面和官方原版在个别菜单措辞上有差异。下面我会把从拿到 exe 到跑通第一份 YOLO 标注的完整路径拆开讲包括参数怎么设、快捷键怎么记、闪退怎么排查。2. labelImg 1.8.6 汉化版的核心机制与首次启动配置2.1 为什么 exe 打包版能绕开 Python 环境labelImg 官方发布形式是 Python 源码包运行依赖 PyQt5 做界面、lxml 做 XML 解析。常规安装流程是pip install labelImg然后命令行启动但这条路径在 Windows 上有两个高频翻车点一是 PyQt5 的 wheel 和当前 Python 版本不匹配二是 lxml 在没有预编译 wheel 的情况下会尝试本地编译需要 Visual C Build Tools很多人卡在这里就放弃了。exe 打包版常见做法是用 PyInstaller 把 Python 解释器、PyQt5、lxml 和 labelImg 源码一起冻结成单个可执行文件把这些依赖全部内嵌。你双击运行时PyInstaller 引导程序会在临时目录解压出一个完整的运行时环境然后加载 labelImg 主模块。这意味着目标机器上不需要装 Python也不需要装任何库。代价是首次启动会比源码版慢几秒因为要解压另外单文件 exe 在某些杀毒软件下会被误报这是 PyInstaller 打包的通病不是这个版本特有的问题。汉化部分通常是对 labelImg 的界面字符串做了替换把菜单、按钮、对话框提示改成中文。需要注意的是汉化版一般只改界面文案不改底层逻辑所以标注生成的 XML 格式和官方版完全一致这点可以放心。2.2 首次启动必须确认的三个配置项exe 拿到手之后不要急着标图先把三个配置项确认一遍否则后面返工很痛苦。第一个是标注格式。labelImg 支持 Pascal VOCXML和 YOLOTXT两种。如果你后续要用 YOLOv5/v8 训练建议直接选 YOLO 格式省掉一步格式转换。切换方式是在左侧工具栏点格式按钮或者用快捷键切换。界面下方会显示当前格式。第二个是自动保存。菜单里有个「自动保存模式」选项打开后每次画完一个框切到下一张图时会自动写入标注文件。不开的话你切图时如果忘了按保存这一张的标注就丢了。我一般建议打开配合下面的快捷键使用。第三个是默认标注文件目录。labelImg 默认把标注文件和图片放在同一目录如果你的图片和标注想分开存需要在菜单里改「标注文件保存目录」。这个设置不会自动记忆到下次启动每次打开新项目都要重新设这是 1.8.6 的一个已知行为。配置确认完之后用「打开目录」加载图片文件夹左侧文件列表出现图片名就说明环境正常。如果列表是空的检查图片格式是不是 labelImg 支持的jpg、png、bmp 等以及路径里有没有中文或特殊字符——虽然汉化版对中文路径的支持比原版好但个别情况下仍会出问题。2.3 汉化界面下的快捷键对照与标注流程汉化版把菜单翻译了但快捷键没变这点很重要。很多人看着中文菜单找不到对应操作其实快捷键和官方文档一致。下面这张表是我实际用下来最高频的几个操作快捷键说明创建矩形框W最常用画检测框下一张D切图前确认已保存上一张A回看修改保存CtrlS未开自动保存时必按删除选中框Delete选中框后删除放大/缩小Ctrl滚轮小目标标注必备切换标注格式无默认需在菜单里点标注流程我一般是这样走的打开目录 → 确认格式为 YOLO → 开启自动保存 → 按 W 画框 → 输入类别名 → 按 D 切下一张。类别名第一次输入后会记住后续画框直接从下拉选不用重复打字。如果一张图里有多个类别画完一个框输入类别后再按 W 画下一个框下拉里会列出已用过的类别。这里有个细节YOLO 格式下labelImg 会在图片同目录生成一个classes.txt文件记录所有类别名。这个文件很关键训练时类别索引就是按这个文件的行顺序来的。如果你中途改了类别名或增删了类别classes.txt 会更新但已经标好的旧文件里的类别索引不会自动改会导致类别错位。所以类别列表最好在开始标注前就定死。3. 用 labelImg 汉化版跑通第一份 YOLO 数据集的完整步骤3.1 目录结构与类别文件的前置准备在打开 labelImg 之前先把目录结构规划好。我推荐的布局是这样的dataset/ ├── images/ # 存放所有待标注图片 │ ├── 001.jpg │ ├── 002.jpg │ └── ... ├── labels/ # 存放标注生成的 txtYOLO格式 └── classes.txt # 类别定义文件为什么要提前建好 labels 目录因为 labelImg 的「标注文件保存目录」需要指向一个已存在的文件夹它不会自动创建。classes.txt 可以提前手写也可以在 labelImg 里标第一个框时自动生成。我习惯提前写好内容一行一个类别名比如person car dog这个顺序就是最终的类别索引person0car1dog2。训练时的 data.yaml 里 names 列表必须和这个顺序完全一致否则模型学出来的类别是错的。这是血泪经验我见过有人标了几千张图最后发现 classes.txt 顺序和训练配置对不上全部返工。3.2 在 labelImg 里加载目录并设置保存路径启动 exe 后按以下步骤操作第一步点菜单「文件」→「打开目录」选择dataset/images。左侧会出现图片文件列表。第二步点左侧工具栏的格式切换按钮把格式切到 YOLO。界面底部状态栏会显示当前格式确认一下。第三步点菜单「文件」→「改变标注文件保存目录」选择dataset/labels。这一步不做的话txt 会生成在 images 目录里和图片混在一起。第四步点菜单「视图」→「自动保存模式」打勾。第五步如果 classes.txt 已经放在 images 目录下labelImg 启动时会自动读取。如果没有你画第一个框时输入类别名它会自动在图片目录生成 classes.txt。但为了保险我还是建议提前放好。设置完成后界面应该是左侧图片列表中间图片显示区右侧类别列表和标注框列表。按 W 开始画框画完弹出类别输入框输入或选择类别框变绿表示已标注。3.3 标注操作与 YOLO txt 输出格式验证画框时几个实操要点框的边角可以拖动调整选中框后按 Delete 删除Ctrl滚轮放大图片后可以更精确地标小目标。如果图片里目标很小建议先放大再画框否则框的位置偏差会比较大。标完几张图后去dataset/labels目录检查生成的 txt 文件。YOLO 格式每行是类别索引 中心x 中心y 宽度 高度所有坐标都是归一化到 0-1 之间的浮点数。比如0 0.5234 0.4120 0.1200 0.2500 1 0.3100 0.6800 0.0800 0.1500第一列 0 对应 classes.txt 第一行的 person第二列和第三列是框中心点的归一化坐标第四列和第五列是框的归一化宽高。如果你打开 txt 发现坐标是大于 1 的整数说明格式没切到 YOLO还是 VOC 格式需要回去重新切换格式并重新标注——VOC 转 YOLO 虽然可以写脚本转但不如一开始就选对。验证方法随便找一张图用 Python 读一下 txt 和图片尺寸把归一化坐标还原成像素坐标画个框看看和原图对不对得上。这个验证脚本很短import cv2 img cv2.imread(dataset/images/001.jpg) h, w img.shape[:2] with open(dataset/labels/001.txt) as f: for line in f: cls, cx, cy, bw, bh map(float, line.split()) # 归一化坐标还原为像素坐标 x1 int((cx - bw / 2) * w) y1 int((cy - bh / 2) * h) x2 int((cx bw / 2) * w) y2 int((cy bh / 2) * h) cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 2) cv2.imwrite(check.jpg, img)这段代码的逻辑是读图片拿宽高读 txt 每行解析出类别和归一化坐标把中心点坐标加减半宽半高还原成左上角和右下角像素坐标然后画框保存。跑完打开 check.jpg如果框的位置和你在 labelImg 里画的一致说明标注文件没问题。参数上注意map(float, ...)把字符串转浮点int()取整时可能有一两个像素误差正常。4. labelImg 汉化版在 Windows 上的避坑与闪退排查4.1 双击 exe 没反应或闪退现象双击 exe 后窗口一闪而过或者任务管理器里看到进程起来又消失。原因最常见的是杀毒软件拦截。PyInstaller 打包的单文件 exe 在启动时会释放临时文件这个行为和一些杀毒软件的启发式检测冲突会被直接杀掉。其次是 exe 文件下载不完整压缩包解压时出错。解决先把 exe 加到杀毒软件白名单或者临时关闭实时防护再试。如果还不行重新解压一次压缩包确认文件大小和压缩包里显示的一致。另外exe 所在路径不要有中文和空格放到D:\tools\labelImg\这种纯英文路径下最稳。4.2 打开目录后图片列表为空现象点了「打开目录」选了图片文件夹但左侧列表什么都没有。原因一是图片格式不支持labelImg 默认只认 jpg、jpeg、png、bmp 这几种webp、tiff 需要额外配置二是路径里有中文或特殊字符虽然汉化版对中文支持较好但个别 Windows 版本下仍会出问题三是图片文件权限不对比如从压缩包里直接打开没解压。解决确认图片是常见格式把整个数据集放到纯英文路径下确保图片文件已经解压到本地磁盘而不是在压缩包预览状态。如果还是不行试着把图片数量减少到几张排除是某张损坏图片导致列表加载中断。4.3 标注文件保存位置不对或找不到现象标完图后找不到 txt 文件或者在 images 目录里发现了 txt。原因没有设置「标注文件保存目录」labelImg 默认保存到图片同目录。另外这个设置不会跨会话记忆每次重新打开 exe 都要重新设。解决每次启动后第一件事就是设保存目录。如果已经标了一批图发现 txt 在 images 里可以批量移动过去但要注意文件名对应关系。移动命令# 在 dataset 目录下执行把 images 里的 txt 移到 labels move images\*.txt labels\Windows 命令行下用movePowerShell 下用Move-Item。移动后确认 labels 目录里的 txt 文件名和 images 里的图片文件名一一对应。4.4 类别索引错位导致训练时类别全错现象训练出来的模型把所有类别都识别成同一个或者类别和实际对不上。原因classes.txt 的顺序变了。比如你标到一半加了一个新类别插在最前面labelImg 更新了 classes.txt但之前标好的 txt 里类别索引还是旧的导致同一个索引在不同文件里指向不同类别。解决类别列表在标注开始前定死中途不要增删改顺序。如果必须改所有已标注的 txt 都要同步更新类别索引这个工作量很大不如重新标。预防办法是标注前先写一份 classes.txt所有人统一用这一份不要各自生成。4.5 大图片加载慢或标注卡顿现象标注高分辨率图片比如 4000x3000 以上时切换图片明显卡顿画框时鼠标延迟。原因labelImg 会把整张图加载到内存并渲染图片越大内存占用越高PyQt5 的渲染在低配机器上会吃力。另外如果图片目录下文件数量过多几千张左侧列表的加载也会拖慢启动。解决标注前把图片缩放到合理尺寸目标检测一般 1280 或 1920 宽度就够了没必要用原始大图。批量缩放可以用 Python 脚本import cv2 import os src_dir dataset/images dst_dir dataset/images_resized os.makedirs(dst_dir, exist_okTrue) for name in os.listdir(src_dir): if not name.lower().endswith((.jpg, .png, .jpeg)): continue img cv2.imread(os.path.join(src_dir, name)) h, w img.shape[:2] # 按宽度 1280 等比缩放 scale 1280 / w if scale 1: img cv2.resize(img, (1280, int(h * scale))) cv2.imwrite(os.path.join(dst_dir, name), img)这段代码遍历源目录对宽度超过 1280 的图片等比缩放到 1280高度按比例算。缩放后的图片标注坐标仍然是归一化的所以不影响训练。注意缩放后要重新标注因为原来的标注文件对应的是原图尺寸——不过 YOLO 格式是归一化的理论上缩放不改变归一化坐标但如果你之前标的是 VOC 格式绝对坐标缩放后坐标就错了。5. 从标注到训练验证数据集可用性的检查脚本与进阶习惯标完一批图之后不要直接丢给训练脚本先做一次数据集完整性检查。我一般会写一个检查脚本确认图片和标注文件一一对应、坐标范围合法、类别索引不越界。这个习惯帮我省过很多次训练到一半才发现数据有问题的后悔药。import os img_dir dataset/images lbl_dir dataset/labels classes_file dataset/classes.txt with open(classes_file) as f: classes [line.strip() for line in f if line.strip()] num_classes len(classes) print(f类别数: {num_classes}, 类别列表: {classes}) img_names {os.path.splitext(n)[0] for n in os.listdir(img_dir) if n.lower().endswith((.jpg, .png, .jpeg))} lbl_names {os.path.splitext(n)[0] for n in os.listdir(lbl_dir) if n.lower().endswith(.txt)} missing_lbl img_names - lbl_names missing_img lbl_names - img_names print(f缺标注的图片: {len(missing_lbl)} 张) print(f缺图片的标注: {len(missing_img)} 个) bad_lines 0 for name in lbl_names: with open(os.path.join(lbl_dir, name .txt)) as f: for i, line in enumerate(f): parts line.strip().split() if len(parts) ! 5: bad_lines 1 continue cls int(parts[0]) coords list(map(float, parts[1:])) if cls num_classes or cls 0: print(f{name}.txt 第{i1}行类别索引越界: {cls}) if any(c 0 or c 1 for c in coords): print(f{name}.txt 第{i1}行坐标越界: {coords}) print(f格式异常行数: {bad_lines})这个脚本做四件事读 classes.txt 确认类别数对比图片和标注文件名集合找出缺失项逐行检查标注文件确认每行五个字段、类别索引在合法范围内、坐标在 0 到 1 之间。跑完如果输出都是 0 和空说明数据集基本干净可以进入训练流程。进阶习惯方面我建议标注阶段就做好版本管理。每标完一批就打包备份一次标注文件用 git 管理也行因为 txt 是纯文本diff 很清晰。另外如果团队多人标注classes.txt 一定要统一最好放在共享目录里每个人启动 labelImg 前先同步这份文件。类别命名用英文小写加下划线不要用中文或空格避免后续训练配置里出编码问题。最后说一个我自己的教训早期用 labelImg 标数据时我总觉得「先标着格式后面再转」结果 VOC 和 YOLO 混着标了好几批最后写转换脚本处理边界情况花的时间比重新标还多。所以现在我的习惯是打开 labelImg 第一件事就是切格式、设保存目录、确认 classes.txt三件事做完再动第一张图。这个习惯看起来慢实际上是最快的路径。希望帮到你。本文还有配套的精品资源点击获取

相关推荐

goldmark 深入指南:基于 CommonMark 的 Go Markdown 解析器架构、扩展机制与实战配置
goldmark 深入指南:基于 CommonMark 的 Go Markdown 解析器架构、扩展机制与实战配置

网络安全 【免费下载链接】sliver Adversary Emulation Framework 项目地址: https://gitcode.com/gh_mirrors/sl/sliver 点击查看 免费下载 导读 goldmark 是当前仓库(sliver 项目)vendor 目录中引入的一款用纯 Go 编写的 Markdown 解析器… · 2026/9/25 3:15:53

如何三步导出并备份微信聊天记录:WeChatMsg 普通用户实操指南
如何三步导出并备份微信聊天记录:WeChatMsg 普通用户实操指南

如何三步导出并备份微信聊天记录:WeChatMsg 普通用户实操指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/w… · 2026/9/25 3:15:53

opentelemetry-go 变更日志深度解读:从 v1.44.0 回看 OpenTelemetry Go 的版本演进、破坏性变更与可观测性实践
opentelemetry-go 变更日志深度解读:从 v1.44.0 回看 OpenTelemetry Go 的版本演进、破坏性变更与可观测性实践

网络安全 【免费下载链接】sliver Adversary Emulation Framework 项目地址: https://gitcode.com/gh_mirrors/sl/sliver 点击查看 免费下载 导读 OpenTelemetry 是云原生可观测性的事实标准,而 go.opentelemetry.io/otel(opentelemetry-go… · 2026/9/25 3:15:53

OI Wiki 离线版 3 种部署方式:从选型到排障的完全指南
OI Wiki 离线版 3 种部署方式:从选型到排障的完全指南

OI Wiki 离线版 3 种部署方式:从选型到排障的完全指南 【免费下载链接】OI-wiki :star2: Wiki of OI / ICPC for everyone. (某大型游戏线上攻略,内含炫酷算术魔法) 项目地址: https://gitcode.com/GitHub_Trending/oi/OI-wiki … · 2026/9/25 3:51:48

用 txtai-xberg 把 Xberg 多格式文档提取接入 txtai 语义搜索:安装、索引与源码级拆解
用 txtai-xberg 把 Xberg 多格式文档提取接入 txtai 语义搜索:安装、索引与源码级拆解

后端AI 应用NLP 【免费下载链接】xberg Polyglot document intelligence with a Rust core: extract text, metadata, images, tables, and structured data from 106 formats across 140 file extensions, plus code intelligence for 371 languages. Fifteen bindings, with … · 2026/9/25 3:51:48

C++模板编译期计算:从模板元编程到constexpr与类型萃取
C++模板编译期计算:从模板元编程到constexpr与类型萃取

模板编译期计算这东西,说白了就是让编译器在编译阶段就把活干完。你可能听过“模板元编程”这个更唬人的名字,但其实拆开看没那么神秘:利用C模板的实例化机制,把原本运行期才执行的计算提前到编译期完成,程序跑起来的时… · 2026/9/25 3:51:42

highlight.io 用户分析实战:基于事件数据源与 CountDistinct 构建独立用户点击统计图
highlight.io 用户分析实战:基于事件数据源与 CountDistinct 构建独立用户点击统计图

可观测性后端 【免费下载链接】highlight highlight.io: The open source, full-stack monitoring platform. Error monitoring, session replay, logging, distributed tracing, and more. 项目地址: https://gitcode.com/gh_mirrors/hi/highlight 点击查看 免费下… · 2026/9/25 3:51:42

2010年408真题详解:n个结点线索二叉树为何有n+1条线索
2010年408真题详解:n个结点线索二叉树为何有n+1条线索

2010年408统考数据结构部分有一道题,问的是n个结点的线索二叉树中线索的数目。这题就2分,但当年很多人在B和C之间犹豫——因为不少同学只背了“线索二叉树把空指针指向前驱后继”这句话,真到推导到底有多少空指针、哪些指针会变成线索时&… · 2026/9/25 3:51:42

Strix Halo本地跑大模型,SSD写入量暴增256GiB?排查与优化实战
Strix Halo本地跑大模型,SSD写入量暴增256GiB?排查与优化实战

上个月我的Strix Halo主机终于到货,就是大家讨论的Ryzen AI Max那一套,128GB统一内存,官方标称内存带宽到256GB/s级别。我买它的目的很直接:本地跑Qwen3.8 Flash Next这种级别的模型,不用再跟远程GPU较劲。系统装好后&… · 2026/9/25 3:51:36

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码