ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Windows下用Anaconda一键搞定roLabelImg旋转框标注工具(附打包exe教程)

2026/8/5 10:26:47 拓冰建站 浏览量
Windows下用Anaconda一键搞定roLabelImg旋转框标注工具(附打包exe教程)

Windows平台Anaconda环境下的roLabelImg旋转框标注工具全流程指南

对于计算机视觉工程师而言,高效标注旋转框(OBB)是许多项目的基础需求。roLabelImg作为一款开源的旋转框标注工具,相比传统矩形标注能更精确地处理倾斜物体。本文将手把手带您完成从环境配置到打包独立exe的全过程,特别针对Windows平台和Anaconda用户优化了操作路径。

1. 环境准备与工具安装

1.1 Anaconda基础配置

首先需要下载并安装Anaconda,推荐选择Python 3.8版本以避免兼容性问题。安装完成后,通过Anaconda Prompt创建专用环境:

conda create -n roLabelImg python=3.8 conda activate roLabelImg

提示:建议使用管理员权限打开Anaconda Prompt,避免后续文件操作权限问题

1.2 核心依赖安装

在激活的虚拟环境中依次安装以下关键组件:

pip install pyqt5 lxml

验证PyQt5是否安装成功:

import sys from PyQt5 import QtWidgets app = QtWidgets.QApplication(sys.argv) window = QtWidgets.QWidget() window.setWindowTitle("PyQt5验证") window.show() sys.exit(app.exec_())

若能看到弹出窗口,说明GUI环境配置正确。

2. roLabelImg的部署与调试

2.1 基础组件准备

需要先获取两个关键仓库:

  • labelImg(基础框架):git clone https://github.com/tzutalin/labelImg.git
  • roLabelImg(旋转框分支):git clone https://github.com/cgvict/roLabelImg.git

进入labelImg目录执行资源编译:

pyrcc5 -o resources.py resources.qrc mv resources.py libs/ python labelImg.py

2.2 常见问题解决

当遇到No module named 'libs.resources'错误时,检查:

  1. 确认resources.py是否生成在正确位置
  2. 检查libs目录是否存在
  3. 尝试绝对路径引用:
import sys sys.path.append('/path/to/libs')

对于roLabelImg,同样需要先编译资源文件:

cd roLabelImg pyrcc5 -o resources.py resources.qrc python roLabelImg.py

3. 旋转框标注实战技巧

成功启动后,界面操作要点:

  • 快捷键映射

    • Z/X:逆/顺时针微调角度(1°)
    • C/V:逆/顺时针大步长旋转(15°)
    • R:重置为水平框
  • XML标注结构解析

<robndbox> <cx>512.5</cx> <cy>384.0</cy> <w>120.3</w> <h>80.7</h> <angle>0.785</angle> <!-- 45度弧度值 --> </robndbox>

注意:角度采用弧度制,0表示水平方向,正值表示顺时针旋转

4. 打包为独立EXE文件

4.1 PyInstaller配置

安装打包工具并准备路径:

pip install pyinstaller

需要收集以下关键路径:

  1. Anaconda环境site-packages目录
  2. labelImg的libs目录
  3. roLabelImg的resources.py文件

典型打包命令示例:

pyinstaller -F -w \ -p C:\ProgramData\anaconda3\envs\roLabelImg\Lib\site-packages \ -p D:\projects\labelImg-master\libs \ -p D:\projects\roLabelImg-master\resources.py \ roLabelImg.py

4.2 打包问题排查

若运行时出现动态库缺失,可尝试:

  1. 手动添加QT插件目录:
--add-data "C:\Path\to\Qt5\plugins;plugins"
  1. 检查依赖完整性:
pyi-archive_viewer roLabelImg.exe
  1. 使用控制台模式调试:
pyinstaller -F roLabelImg.py # 去掉-w参数

5. 性能优化与高级配置

对于大批量标注任务,建议:

  1. 预加载优化
# 在roLabelImg.py中添加 import cv2 cv2.setNumThreads(0) # 禁用OpenCV多线程
  1. 自定义快捷键: 修改libs/canvas.py中的keyPressEvent方法

  2. 批量导出转换: 使用脚本处理XML转YOLO OBB格式:

import xml.etree.ElementTree as ET import math def xml_to_yolo_obb(xml_path): tree = ET.parse(xml_path) root = tree.getroot() size = root.find('size') img_w = float(size.find('width').text) img_h = float(size.find('height').text) for obj in root.iter('object'): robndbox = obj.find('robndbox') cx = float(robndbox.find('cx').text) / img_w cy = float(robndbox.find('cy').text) / img_h w = float(robndbox.find('w').text) / img_w h = float(robndbox.find('h').text) / img_h angle = float(robndbox.find('angle').text) # 转换为YOLO OBB格式 print(f"{cx:.6f} {cy:.6f} {w:.6f} {h:.6f} {angle:.6f}")

实际项目中,建议将打包好的exe与示例配置文件、预设类别文件一起分发,创建完整的标注工具包。对于团队协作,可以考虑添加自动云同步功能,通过简单的Python脚本实现标注结果的实时同步:

import os import shutil from watchdog.observers import Observer from watchdog.events import FileSystemEventHandler class SyncHandler(FileSystemEventHandler): def on_modified(self, event): if event.src_path.endswith('.xml'): shutil.copy2(event.src_path, 'Z:/shared_annotations/') observer = Observer() observer.schedule(SyncHandler(), path='./annotations') observer.start()