问题描述
我将json边界框转换为yolo darknet格式。但是在训练过程中,它会显示并显示错误,
无法打开标签文件。 (仅当您使用MSCOCO时,这才是正常的): 数据/obj/Avacado_retraining__172.txt
用于转换的代码:
import os
import cv2
import json
from PIL import Image
import shutil
import utils
def json2yolo(labels_dir,index,img_dir1,Result_path):
for jsons in os.listdir(labels_dir):
with open(os.path.join(labels_dir,jsons),"r") as json_data:
json_data = json.load(json_data)
for objects in json_data:
# if objects=="_via_img_Metadata":
for filename in json_data[objects]:
for regions in json_data[objects]['regions']:
if regions is not None:
filename=json_data[objects]['filename']
xmin=float(regions['shape_attributes']['x'])
ymin=float(regions['shape_attributes']['y'])
width=float(regions['shape_attributes']['width'])
height=float(regions['shape_attributes']['height'])
xmax=xmin+width
ymax=ymin+height
b = (float(xmin),float(xmax),float(ymin),float(ymax))
im=Image.open(os.path.join(img_dir1,filename))
w= int(im.size[0])
h= int(im.size[1])
bb = utils.yolo_convert((w,h),b)
with open(os.path.join(Result_path,filename[:-3]+"txt"),"a+") as txt:
# print(str(index)," ",bb)
txt.write(str(index) + " " + " ".join([str(a) for a in bb]) + '\n')
dataset_path="./dataset"
images_path=os.path.join(dataset_path,"images")
labels_path=os.path.join(dataset_path,"labels")
Result_path=os.path.join(dataset_path,"Result")
index=0
json2yolo(labels_path,images_path,Result_path)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)