labelimg标注yolo格式含义
时间: 2025-06-04 18:21:21 浏览: 14
### LabelImg 中 YOLO 格式 数据标注 的含义
YOLO(You Only Look Once)是一种高效的目标检测算法,其数据标注格式相对简单明了。在使用LabelImg工具进行标注时,生成的YOLO格式文件是以`.txt`形式存储的,每张图片对应一个标注文件[^1]。
#### 文件结构
对于每张图片,YOLO格式的标注文件位于同一目录下的同名`.txt`文件中。该文件的内容由若干行组成,每一行代表一个目标对象的信息。具体来说,每一行包含五个数值:
`<class> <x_center> <y_center> <width> <height>`
- `<class>` 是目标类别的索引编号,从0开始计数,表示当前目标属于哪个类别。
- `<x_center>` 和 `<y_center>` 表示目标边界框中心点相对于整张图片宽度和高度的比例坐标。
- `<width>` 和 `<height>` 则分别表示目标边界框宽高相对于整张图片宽度和高度的比例尺寸。
这些比例值均被归一化处理,取值范围为 `[0, 1]`[^2]。
#### 计算方式
假设某张图片大小为 `W×H` 像素,而某个目标的边界框左上角坐标为 `(x_min, y_min)`,右下角坐标为 `(x_max, y_max)`,则可以通过以下公式计算YOLO格式所需的参数:
```python
x_center = (x_min + x_max) / (2 * W)
y_center = (y_min + y_max) / (2 * H)
width = (x_max - x_min) / W
height = (y_max - y_min) / H
```
此过程确保所有位置与尺度信息都被标准化至统一范围内,便于模型输入及后续训练优化[^3]。
#### 实际应用举例
假如有一幅分辨率为 `640×480` 的图像,在其中标记了一个汽车目标,其真实像素级边界框为 `(100, 150), (300, 400)` ,并且预设类别列表里“car”的索引号为1,则最终写入相应 `.txt` 文件的一行为:
```
1 0.3125 0.5417 0.3125 0.5417
```
这里各字段依次解释如下:
- 类别序号:“car” 对应的是第1类;
- 归一化后的中心横纵坐标分别为约等于 `0.3125`, `0.5417`;
- 宽度与高度同样经过归一化得到约为 `0.3125`, `0.5417`.
这种紧凑表达极大地方便了深度学习框架读取解析以及加速运算效率提升[^4].
```python
def convert_to_yolo_format(x_min, y_min, x_max, y_max, img_width, img_height):
"""
将标准矩形框坐标转换成YOLO格式
参数:
x_min, y_min, x_max, y_max: 边界框四个顶点坐标
img_width, img_height: 图片实际分辨率
返回:
class_id, x_center_norm, y_center_norm, width_norm, height_norm: 转换后结果
"""
x_center = ((x_min + x_max) / 2) / img_width
y_center = ((y_min + y_max) / 2) / img_height
width = abs((x_max - x_min)) / img_width
height = abs((y_max - y_min)) / img_height
return int(class_id), round(x_center, 6), round(y_center, 6), round(width, 6), round(height, 6)
# 示例调用
result = convert_to_yolo_format(100, 150, 300, 400, 640, 480)
print(result)
```
阅读全文
相关推荐


















