使用python,将文件夹中所有的labelme标注生成的json文件转换为可以用于labelimg标注的yolo格式的txt文件,且txt文件名与原文件名一致
时间: 2024-02-15 22:04:04 浏览: 112
好的,您可以使用下面的代码实现:
```python
import json
import os
import cv2
json_folder = 'json_folder' # 存放json文件的文件夹路径
txt_folder = 'txt_folder' # 存放txt文件的文件夹路径
if not os.path.exists(txt_folder):
os.makedirs(txt_folder)
for json_file in os.listdir(json_folder):
if json_file.endswith('.json'):
json_path = os.path.join(json_folder, json_file)
with open(json_path, 'r') as f:
data = json.load(f)
txt_file = os.path.splitext(json_file)[0] + '.txt'
txt_path = os.path.join(txt_folder, txt_file)
with open(txt_path, 'w') as f:
for obj in data['shapes']:
label = obj['label']
x1, y1 = obj['points'][0]
x2, y2 = obj['points'][1]
img_width, img_height = data['imageWidth'], data['imageHeight']
x_center, y_center = (x1 + x2) / 2 / img_width, (y1 + y2) / 2 / img_height
w, h = (x2 - x1) / img_width, (y2 - y1) / img_height
f.write(f"{label} {x_center} {y_center} {w} {h}\n")
```
该代码将逐个读取json_folder文件夹下的json文件,并将其转换为yolo格式的txt文件,然后将其存放在txt_folder文件夹下。其中,txt文件名与原文件名一致,只是后缀由.json变为了.txt。
希望这个代码可以帮到您!
阅读全文