# LabelImgJava **Repository Path**: tangdou89/label-img-java ## Basic Information - **Project Name**: LabelImgJava - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-03-03 - **Last Updated**: 2026-03-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # LabelImg Java版本 基于Java Swing的图片标注工具,支持YOLO格式标注输出和ONNX模型AI自动标注。 ## 功能特性 - ✅ 图片浏览和加载 - ✅ 矩形框标注 - ✅ 多类别管理 - ✅ YOLO格式保存/加载 - ✅ 快捷键支持 - ✅ 标注框拖拽移动 - ✅ 标注框边框调整 - ✅ 标注列表管理 - ✅ 文件列表导航 - ✅ 图片缩放(Ctrl+滚轮) - ✅ AI自动标注(基于ONNX) - ✅ 批量AI标注 ## 快捷键 | 快捷键 | 功能 | |--------|------| | `Ctrl+O` | 打开图片目录 | | `Ctrl+S` | 保存当前标注 | | `Ctrl+R` | AI自动标注当前图片 | | `W` | 创建矩形框 | | `D` | 下一张图片 | | `A` | 上一张图片 | | `Delete` | 删除选中的框 | | `Ctrl+滚轮` | 缩放图片 | ## 使用方法 ### 1. 编译项目 使用Maven打包(会自动包含所有依赖): ```bash mvn clean package ``` 或者在Windows上双击 `build.bat` 这将生成一个包含所有依赖的Fat JAR文件:`target/labelV2-1.0.0.jar` ### 2. 运行程序 ```bash java -jar target/labelV2-1.0.0.jar ``` 或者在Windows上双击 `run.bat` **注意:** - 需要Java 11或更高版本 - 打包后的JAR文件包含所有依赖,可以直接运行 - 如果遇到`ClassNotFoundException`,请确保使用`mvn clean package`重新打包 ### 3. 标注流程 1. 点击"打开目录"按钮,选择包含图片的文件夹 2. 点击"创建框"按钮或按`W`键,进入绘制模式 3. 在图片上拖拽鼠标绘制矩形框 4. 在弹出的对话框中选择或输入类别名称 5. 重复步骤2-4标注所有目标 6. 标注会自动保存,或按`D`键切换到下一张图片 ### 4. AI自动标注 #### 准备ONNX模型 支持的YOLO版本: - ✅ YOLOv5 - ✅ YOLOv8 - ✅ YOLOv11 (YOLO11) **导出ONNX模型示例:** ```python # YOLOv5 python export.py --weights yolov5s.pt --include onnx --imgsz 640 # YOLOv8/YOLOv11 from ultralytics import YOLO model = YOLO('yolo11n.pt') # 或 yolov8n.pt model.export(format='onnx', imgsz=640) ``` **模型要求:** 1. 输入尺寸:640x640(推荐) 2. 格式:ONNX格式(.onnx文件) 3. 输出:标准YOLO检测输出 #### 使用AI标注 1. 点击菜单"AI" -> "加载ONNX模型",选择你的.onnx模型文件 2. 加载成功后,有以下选项: - **自动标注当前图片**:对当前显示的图片进行AI推理并生成标注(快捷键:`Ctrl+R`) - **批量自动标注**:对目录中所有图片进行批量AI标注 - **AI设置**:调整置信度阈值和IOU阈值 #### AI设置说明 - **置信度阈值**(默认0.25):控制检测的严格程度,越高越严格 - **IOU阈值**(默认0.45):用于NMS(非极大值抑制)去除重复框 **推荐设置:** - 高精度场景:置信度 0.5-0.7 - 一般场景:置信度 0.25-0.4 - 召回优先:置信度 0.1-0.25 ### 5. 标注框操作 - **移动标注框**:点击框内部拖拽 - **调整大小**:拖拽边框或角点 - **修改类别**:双击标注框 - **删除标注框**:选中后按`Delete`键 ### 6. 图片缩放 - 按住`Ctrl`键 + 鼠标滚轮上下滚动 - 放大:向上滚动 - 缩小:向下滚动 - 缩放范围:10% - 1000% ### 4. 标注文件格式 标注文件保存为与图片同名的`.txt`文件,采用YOLO格式: ``` ``` 所有坐标值都是相对于图片尺寸的归一化值(0-1之间)。 ## 类别管理 - 类别信息保存在`classes.txt`文件中 - 每行一个类别名称 - 类别ID按行号顺序分配(从0开始) - 可以在标注时动态添加新类别 ## 系统要求 - Java 11 或更高版本 - Maven 3.6 或更高版本 ## 项目结构 ``` labelV2/ ├── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── labelimg/ │ │ ├── LabelImgApp.java # 主程序入口 │ │ ├── MainFrame.java # 主窗口 │ │ ├── ImageCanvas.java # 图片画布 │ │ ├── BoundingBox.java # 边界框模型 │ │ ├── YoloFormat.java # YOLO格式处理 │ │ ├── ClassManager.java # 类别管理 │ │ ├── FileListPanel.java # 文件列表面板 │ │ └── LabelListPanel.java # 标注列表面板 │ └── resources/ ├── pom.xml └── README.md ``` ## 界面说明 - **中央画布区域**:显示图片和标注框 - **右侧标注列表**:显示当前图片的所有标注 - **右侧文件列表**:显示目录中的所有图片文件 - **顶部工具栏**:常用操作按钮 - **菜单栏**:完整功能菜单 ## 注意事项 1. 支持的图片格式:JPG, JPEG, PNG, BMP 2. 标注文件与图片保存在同一目录 3. 切换图片时会自动保存当前标注 4. 双击标注框可以修改类别 5. 拖拽标注框可以移动位置 ## 开发说明 本项目参考了labelImg的功能设计,使用Java Swing实现,主要特点: - 纯Java实现,跨平台支持 - 简洁的代码结构 - 完整的YOLO格式支持 - 友好的用户界面 ## 许可证 MIT License