当前位置: 首页 > news >正文

lablelme标注的数据转成YOLO v8 格式

1 labelme 转 yolov8 格式

import json
import cv2
import numpy as np
import os
def json2yolo(path):# dic={'N_shaoxi':'0',   'N_qiaoqi':'1',   'N_qiaojie':'2',   'N_pianyi':'3',   'N_yiwu': '4', \#      'NV_shaoxi': '5', 'NV_qiaoqi': '6', 'NV_qiaojie': '7', 'NV_pianyi': '8', 'NV_yiwu': '9',\#      'R_shaoxi': '10',  'R_qiaoqi': '11',  'R_qiaojie': '12',  'R_pianyi': '13',  'R_yiwu': '14',\#      'XS_shaoxi': '15', "XS_qiaoqi": '16', 'XS_qiaojie': '17', 'XS_pianyi': '18', 'XS_yiwu': '19',#      '1': '0'}dic={'N_shaoxi':'0',   'N_qiaoqi':'1',   'N_qiaojie':'2',   'N_pianyi':'3',   'N_yiwu': '4', \'NV_shaoxi': '5', 'NV_qiaoqi': '6', 'NV_qiaojie': '7', 'NV_pianyi': '8', 'NV_yiwu': '9',\'R_shaoxi': '10',  'R_qiaoqi': '11',  'R_qiaojie': '12',  'R_pianyi': '13',  'R_yiwu': '14',\'XS_shaoxi': '15', "XS_qiaoqi": '16', 'XS_qiaojie': '17', 'XS_pianyi': '18', 'XS_yiwu': '19','XP_shaoxi': '15', "XP_qiaoqi": '16', 'XP_qiaojie': '17', 'XP_pianyi': '18', 'XP_yiwu': '19'}#dic = {'N_shaoxi': '0', 'N_shaoxi': '1','N_qiaojie': '2','N_pianyi':'3','N_yiwu:'4'}  # 类别字典if ".json" in path:data = json.load(open(path,encoding="utf-8"))#读取带有中文的文件w=data["imageWidth"]#获取jaon文件里图片的宽高h=data["imageHeight"]all_line=''for i in  data["shapes"]:#归一化坐标点。并得到cx,cy,w,h[[x1,y1],[x2,y2]]=i['points']x1,x2=x1/w,x2/wy1,y2=y1/h,y2/hcx=(x1+x2)/2cy=(y1+y2)/2wi=abs(x2-x1)hi=abs(y2-y1)#将数据组装成yolo格式line="%s %.4f %.4f %.4f %.4f\n"%(dic[i['label']],cx,cy,wi,hi)#生成txt文件里每行的内容all_line+=line# print(all_line)filename = path.replace('json','txt')#将path里的json替换成txt,生成txt里相对应的文件路径fh = open(filename,'w',encoding='utf-8')fh.write(all_line)fh.close()else:filename = path.replace('.jpg', '.txt')  # 将path里的json替换成txt,生成txt里相对应的文件路径fh = open(filename, 'w', encoding='utf-8')fh.close()path= "E:/_0904/"
path_list_sub = os.listdir(path)
print("path_list_sub", path_list_sub)
for path_sub in path_list_sub:json_path_list =os.listdir(path+path_sub)path_list2=[x for x in json_path_list]#获取所有json文件的路径# path_list2 = [x for x in json_path_list if ".json" in x]  # 获取所有json文件的路径print("len of path_list2 ",path_sub,len(path_list2))for p in path_list2:absolute_path= (path+path_sub+'/'+p)print("abs path",absolute_path)json2yolo(path+path_sub+'/'+p)

2 分为训练集&验证集合

import json
import cv2
import numpy as np
import os
import shutil
root_root_path = "。/0904/"
root_paths = os.listdir(root_root_path)
for root_path in root_paths:  # DATE NAMED DATAroot_path = root_root_path+root_path+'/'# root_path = "E:/AOI_DATA/sort/data0705/"class_path_list = os.listdir(root_path)print("path_list_sub", class_path_list)all_file_path=[]index=0for class_path in class_path_list: #N NV R XSall_path_list =os.listdir(root_path+class_path)for file in all_path_list:# print()all_file_path.append((root_path + class_path + '/' + file))# os.path.exists(test_file.txt)print("file len ",len(all_file_path))txt_file_path=[]for file_path in all_file_path:if file_path[-3:]=="txt":print("file_path",file_path)txt_file_path.append(file_path)# print(txt_file_path)print("txt file len ",len(txt_file_path))train_index = 0valid_index = 0split_index = 0for tf in txt_file_path:if os.path.exists(tf[:-3]+'jpg'):if split_index % 5 != 0:#passshutil.copy(tf,fr'.\X_DATA\train\labels')shutil.copy(tf[:-3]+'jpg', fr'.\train\images')train_index += 1else:shutil.copy(tf,fr'.\X_DATA\valid\labels')shutil.copy(tf[:-3]+'jpg', fr'.\X_DATA\valid\images')valid_index += 1split_index += 1print("train_index image num:", train_index)print("valid_index image num:", valid_index)print("split_index image num:", split_index)
http://www.lryc.cn/news/438269.html

相关文章:

  • 【linux】cat 命令
  • 速通sass基础语法
  • Vue: watch5种监听情况
  • Android 车联网——汽车系统介绍(附2)
  • C++ 链表
  • 中国初创公司数量下降了98%
  • 【SSRF漏洞】——http协议常见绕过
  • [网络][CISCO]CISCO_华为网络设备端口镜像配置
  • 第二十五章 添加数字签名
  • GHOST重装后DEF盘数据救援指南
  • 使用blender快速制作metahuman面部以及身体绑定教程
  • OpenHarmony鸿蒙( Beta5.0)智能窗户通风设备开发详解
  • pandas 将多条记录整合成一条记录,每条记录的year和month字段组成新的字段名
  • C# 中的多线程同步:原子变量、原子操作、内存顺序和可见性
  • 视图(mysql)
  • elementui组件el-upload实现批量文件上传
  • 【JAVA入门】Day45 - 压缩流 / 解压缩流
  • Qt_自定义信号
  • 【运维方案】某系统运维需求方案参考(doc全原件2024)
  • Linux环境使用Git同步教程
  • c++临时对象导致的生命周期问题
  • CSP-J 算法基础 深度优先搜索
  • LeetCode题练习与总结:基本计算器 Ⅱ--227
  • Elasticsearch基础(七):Logstash如何开启死信队列
  • c语言--力扣简单题目(链表的中间节点)讲解
  • 【STM32 Blue Pill编程】-定时器计数模式
  • 【例题】lanqiao1331 二进制中 1 的个数
  • 【论文解读】图像序列识别:CRNN技术在场景文本识别中的应用与突破(附论文地址)
  • Vue3+CesiumJS相机定位camera
  • turbo译码算法MAX, MAX_SCALE and MAX_STAR的比较