久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

YOLO:將json文件轉(zhuǎn)換為txt文件

 pythonjava學(xué)習(xí) 2023-05-18 發(fā)布于云南

因為YOLO訓(xùn)練的時候有自己的標注格式,,因此需要將labelme標注的json格式的數(shù)據(jù)轉(zhuǎn)成yolo需要的txt格式,。

json各部分的含義在上一篇中已經(jīng)詳細介紹,。

今天記錄的是如何將json轉(zhuǎn)換成txt,。

yolo需要的標注是五個值:類別 中心點x坐標 中心點y坐標 框的寬 框的高

因此我們需要將json中相應(yīng)的值進行轉(zhuǎn)換,,并寫入txt中,。

1,、將左上角右下角坐標注轉(zhuǎn)換為中心點坐標

注:在轉(zhuǎn)換時同時需要做歸一化,,歸一化的方法是除以圖片的寬或高,以得到0~1之間的值,。

代碼如下:

#json的坐標轉(zhuǎn)換為yolo的坐標轉(zhuǎn)換后x,y為中心點坐標,,w h為框的寬和高
def convert(img_size, box):  # 坐標轉(zhuǎn)換
    dw = 1. / (img_size[0])  
    dh = 1. / (img_size[1])
    x = (box[0] + box[2]) / 2.0 * dw
    y = (box[1] + box[3]) / 2.0 * dh
    w = (box[2] - box[0]) * dw
    h = (box[3] - box[1]) *dh

return x, y, w, h  #返回標準化后的值,即0-1之間的值

2,、json文件轉(zhuǎn)換為txt文件,,路徑為json文件的路徑,名字與json的文件名相同,。

代碼如下:

#僅對一個json文件轉(zhuǎn)換成txt文件
def json2txt(json_file):
    txt_name = json_file.split(".")[0] + ".txt"  # 生成txt文件存放的路徑,,放在原文檔,僅將json轉(zhuǎn)換為txt
    # print(txt_name)
    txt_file = open(txt_name, 'w')

    # json_path = os.path.join(json_floder_path, json_name)
    data = json.load(open(json_file, 'r', encoding='utf-8'))#打開json文件
    # print(data)
    # print(data["imagePath"])
    image_path = json_file.split("labels")[0] + "images\\" +data["imagePath"]# 圖片存放路徑,,要求圖片與標簽命名相同
    # print(image_path)
    h = data['imageHeight']#獲取圖片寬高
    w = data['imageWidth']
    # print(h, w)

    for item in data['shapes']:
        # print(item)
        classify = classify_map[item['label']]# 此處為框的類別

# print(classify)
        points = item['points']
        # print(points)
        x1 = min(points[0][0], points[1][0])
        y1 = min(points[0][1], points[1][1])
        x2 = max(points[0][0], points[1][0])
        y2 = max(points[0][1], points[1][1])
        box = [float(x1), float(y1), float(x2), float(y2)]

        bb = (x1, y1, x2, y2)
        bbox = convert((w, h), bb)
        txt_file.write(str(classify) + " " + " ".join([str(a) for a in bbox]) + '\n')  # 此處將該目標類別記為“0”

3,、對一個文件夾中的所有json轉(zhuǎn)為txt文件。

代碼如下:

#對一個文件夾中的所有json轉(zhuǎn)為txt文件
def json2txts(path):
    count = 0
    files = os.listdir(path)
    for file in files:
        if file[-5:] == ".json":
            json_file = path + "\\" +file
            # print(json_file)
            json2txt(json_file)
            count = count + 1
    print("共將", count, "json文件轉(zhuǎn)成---->txt文件")

至此,,即可將文件夾中所有的json文件均轉(zhuǎn)為yolo訓(xùn)練時所需要的txt文件了,。

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多