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 python3.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.gitroLabelImg旋转框分支git clone https://github.com/cgvict/roLabelImg.git进入labelImg目录执行资源编译pyrcc5 -o resources.py resources.qrc mv resources.py libs/ python labelImg.py2.2 常见问题解决当遇到No module named libs.resources错误时检查确认resources.py是否生成在正确位置检查libs目录是否存在尝试绝对路径引用import sys sys.path.append(/path/to/libs)对于roLabelImg同样需要先编译资源文件cd roLabelImg pyrcc5 -o resources.py resources.qrc python roLabelImg.py3. 旋转框标注实战技巧成功启动后界面操作要点快捷键映射Z/X逆/顺时针微调角度1°C/V逆/顺时针大步长旋转15°R重置为水平框XML标注结构解析robndbox cx512.5/cx cy384.0/cy w120.3/w h80.7/h angle0.785/angle !-- 45度弧度值 -- /robndbox注意角度采用弧度制0表示水平方向正值表示顺时针旋转4. 打包为独立EXE文件4.1 PyInstaller配置安装打包工具并准备路径pip install pyinstaller需要收集以下关键路径Anaconda环境site-packages目录labelImg的libs目录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.py4.2 打包问题排查若运行时出现动态库缺失可尝试手动添加QT插件目录--add-data C:\Path\to\Qt5\plugins;plugins检查依赖完整性pyi-archive_viewer roLabelImg.exe使用控制台模式调试pyinstaller -F roLabelImg.py # 去掉-w参数5. 性能优化与高级配置对于大批量标注任务建议预加载优化# 在roLabelImg.py中添加 import cv2 cv2.setNumThreads(0) # 禁用OpenCV多线程自定义快捷键 修改libs/canvas.py中的keyPressEvent方法批量导出转换 使用脚本处理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()
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2428215.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!