将数据集yolo格式的标签文件,转换成csv格式的完整代码
时间: 2023-12-27 15:03:52 浏览: 40
以下是将数据集YOLO格式的标签文件转换成CSV格式的Python代码:
```python
import os
import csv
# 指定YOLO标签文件和保存CSV文件的路径
yolo_label_file = 'path/to/yolo/label/file.txt'
csv_file = 'path/to/save/csv/file.csv'
# 建立CSV文件并写入表头
with open(csv_file, mode='w', newline='') as f:
writer = csv.writer(f)
writer.writerow(['filename', 'width', 'height', 'class', 'xmin', 'ymin', 'xmax', 'ymax'])
# 读取YOLO标签文件并写入CSV文件
with open(yolo_label_file, mode='r') as f:
for line in f.readlines():
# 将每一行的数据转换成列表
data = line.strip().split()
# 获取文件名和图像尺寸
filename = os.path.basename(data[0])
width = int(data[1])
height = int(data[2])
# 获取物体类别和坐标信息
for i in range(3, len(data), 5):
obj_class = data[i]
xmin = int(data[i+1])
ymin = int(data[i+2])
xmax = int(data[i+3])
ymax = int(data[i+4])
# 将数据写入CSV文件
with open(csv_file, mode='a', newline='') as f:
writer = csv.writer(f)
writer.writerow([filename, width, height, obj_class, xmin, ymin, xmax, ymax])
```
在上面的代码中,我们首先指定了YOLO标签文件的路径和保存CSV文件的路径,然后建立CSV文件并写入表头。接着,我们读取YOLO标签文件的每一行,将每一行的数据转换成列表,并获取文件名和图像尺寸。最后,我们获取物体类别和坐标信息,并将数据写入CSV文件。
需要注意的是,上面的代码只适用于标签文件中每个物体只有一个边界框的情况。如果标签文件中每个物体有多个边界框,需要对代码进行相应的修改。