#python #yolo #darknet
#python #yolo #darknet
Вопрос:
Я преобразовал свой ограничительный прямоугольник json в формат yolo darknet. Но во время процесса обучения он показывает и ошибку,
Не удается открыть файл ярлыка. (Это может быть нормально, только если вы используете MSCOCO): data/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, index,images_path,Result_path)