yolov8 labelme制作json数据集转化为segment需要的txt格式

# 思路:
import json,shutil
from decimal import Decimal
import os,shutil

def json_to_txt_v8(path_A,path_B):
    set_A = set(i.split('.')[0] for i in os.listdir(path_A))
    
    for i in set_A:
        if i == "":
            pass
        else:
            name = os.path.join(path_A, i + '.json')
            print("name", name)
            save_name = os.path.join(path_B, i + '.txt')
            print("save_name", save_name)
            with open(name, 'r') as f:
                    data = json.load(f)
                    print("" + data.get('version'))
                    print("flags略")
                    print("shapes略")
                    print("" + data.get('imagePath'))
                    print("imageData=略" )
                    print(""+str(data['imageHeight']))
                    print(""+str(data['imageWidth']))
                    H=data.get('imageHeight')
                    W=data.get('imageWidth')
                    classes=["a","b","c","d","e","f"]
                    locals_items = data['shapes'][0].keys()
                    print("locals_items=",locals_items)
                    for k in data['shapes']:
                #bug  下标不在列表中
                            point_arr=[]
                            label_index=list(classes).index(str(k['label']))
                            point_arr.append(str(label_index))
                           # print('标签索引序号',label_index)
                            points_contexts = (k['points'])
                         #   print(points_contexts)
                          #  print("点的个数=", len(points_contexts))
                            for i in range(len(points_contexts)):
                                x_Value = Decimal(str(round(float((points_contexts[i][0]) / (W)), 6))).quantize(Decimal('0.000000'))
                                y_Value = Decimal(str(round(float((points_contexts[i][1]) / (H)), 6))).quantize(Decimal('0.000000'))
                                point_arr.append(str(x_Value))
                                point_arr.append(str(y_Value))
                                # print(points_contexts[i])
                                # print(x_Value)
                                # print(y_Value)
                           # print(point_arr)
                            with open(save_name, 'a+') as ww:
                                for i in range(len(point_arr)):
                                #    print(point_arr[i])
                                    ww.write(point_arr[i])
                                    ww.write(' ')
                                ww.write('\n')
if __name__== "__main__" :
    path_A='./json'
    path_B='./txt'
    if not os.path.exists(path_A):
        print("搞笑吗,需要转的json文件夹不存在,请查看路径")
    else:
        if not os.path.exists(path_B):
            os.makedirs(path_B)
            json_to_txt_v8(path_A,path_B)
        else:
            shutil.rmtree(path_B)
            os.makedirs(path_B)
            json_to_txt_v8(path_A,path_B)

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用YOLOv8Labelme训练自己的数据集,您需要进行以下步骤: 1. 创建数据集文件:根据引用所提供的格式,在seg.yaml文件中指定您的训练、验证和测试图像的路径。确保路径是正确的,并且图像数量正确。同时在seg.yaml文件中指定类别名称和对应的编号。 2. 安装Labelme:根据引用中的指示,使用Anaconda创建一个名为labelme的环境,并激活该环境。然后,根据您使用的Python版本,安装相应的依赖库。 3. 标注数据集:使用Labelme标注工具标注您的数据集。根据"1.2Labelme 使用教程"可以学习如何使用Labelme进行标注。 4. 准备标注结果:标注完成后,您将得到一些.json格式的标注文件。确保这些文件与相应的图像文件在同一目录下。 5. 训练模型:使用YOLOv8的train模式,指定模型文件yolov8s-seg.yaml,数据文件为seg.yaml。设置适当的训练参数,如epochs(训练轮数)、patience(停止训练的等待轮数)、batch(每个批次的图像数量)等。 综上所述,您可以通过按照上述步骤使用YOLOv8Labelme来训练自己的数据集。请确保按照步骤正确操作,并根据具体情况进行相应调整。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* *2* [YOLOv8实例分割训练自己的数据集保姆级教程](https://blog.csdn.net/m0_51530640/article/details/129975257)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值