当前位置: 首页 > 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)

相关文章:

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,\# …...

【linux】cat 命令

cat 命令是 Linux 和 Unix 系统中非常基础且常用的一个命令,它的全称是 "concatenate" 的缩写,意为“连接”或“串联”。尽管名字听起来像是专门用于连接文件的,但 cat 命令的用途远不止于此。它主要用于查看、创建、合并文件内容&…...

速通sass基础语法

速通Sass语法: sass的特点: 由于css的缺陷:无法自定义变量,不可引用,嵌套等。sass/scss/less等css预处理器产生。以sass为例,引入了变量、嵌套、运算、混入(Mixin)、继承、颜色处理、函数等诸多功能。方便…...

Vue: watch5种监听情况

目录 一.watch的性质与作用 1.watch 的性质包括: 2.watch 常用于以下场景: 二.监视ref定义的基本类型数据 三.监视ref定义的对象类型数据 四.监视reactive定义的对象类型数据 五.监视ref或reactive定义的对象类型数据中的某个属性 六.监视上述的…...

Android 车联网——汽车系统介绍(附2)

汽车系统指的是由多个模块或组件组成的系统,如发动机系统、制动系统、空调系统等,这些系统通常由多个 ECU 协同工作来完成特定的任务。 一、汽车系统 1、防抱死制动系统 ABS(Anti-lock Braking System,防抱死制动系统)是一项重要的汽车安全技术,其主要功能是在车辆紧急…...

C++ 链表

基本用法 C++提供了list容器,这是一个双向链表,能高效进行数据添加和删除。 引入头文件 #include <iostream> #include <list> // 引入list头文件 using namespace std;创建和初始化 list...

中国初创公司数量下降了98%

近年来&#xff0c;中国风险投资市场的风云变幻&#xff0c;通过IT Juzi&#xff08;IT桔子&#xff09;等权威数据服务提供商的透镜&#xff0c;得以清晰展现。数据显示&#xff0c;自2018年的鼎盛时期——拥有51,302家初创公司以来&#xff0c;这一数字在短短五年内急剧下降至…...

【SSRF漏洞】——http协议常见绕过

改变的确很难&#xff0c;但结果值得冒险 本文如有错误之处&#xff0c;还请各位师傅指正 一.ssrf概述 SSRF全称为Server-side Request Fogery,中文含义服务器端请求伪造 SSRF是一种由攻击者构造形成由目标服务端发起请求的一个安全漏洞。一般情况下&#xff0c;SSRF攻击的目标…...

[网络][CISCO]CISCO_华为网络设备端口镜像配置

CISCO 华为网络设备端口镜像配置大全 isco交换机通常支持2组镜像&#xff0c;4000系列有支持6组镜象的。支持所全端口镜像。 Cisco catylist2820 有2个菜单选项 先进入menu选项&#xff0c;enable port monitor 进入cli模式&#xff0c; en conf term interface fast0/…...

第二十五章 添加数字签名

文章目录 第二十五章 添加数字签名数字签名概述添加数字签名 第二十五章 添加数字签名 本主题介绍如何向 IRIS Web 服务和 Web 客户端发送的 SOAP 消息添加数字签名。 通常&#xff0c;会同时执行加密和签名。为简单起见&#xff0c;本主题仅介绍签名。有关结合加密和签名的信…...

GHOST重装后DEF盘数据救援指南

一、现象解析&#xff1a;GHOST重装后的DEF盘失踪之谜 在计算机维护的日常中&#xff0c;GHOST重装因其快速便捷的特点&#xff0c;成为众多用户解决系统问题的首选方法。然而&#xff0c;这一操作虽能迅速恢复系统至初始状态&#xff0c;却也暗藏风险&#xff0c;尤其是当不慎…...

使用blender快速制作metahuman面部以及身体绑定教程

【metablriger教程】使用blender一键绑定自定义角色metahuman绑定并导入UE5引擎教程_哔哩哔哩_bilibili 目前市面上的制作metahuman绑定的工具大多是maya的&#xff0c;metablriger是一个帮助用户快速制作metahuman绑定的blender插件&#xff0c;可以平替市面上已有的metahuma…...

OpenHarmony鸿蒙( Beta5.0)智能窗户通风设备开发详解

鸿蒙开发往期必看&#xff1a; 一分钟了解”纯血版&#xff01;鸿蒙HarmonyOS Next应用开发&#xff01; “非常详细的” 鸿蒙HarmonyOS Next应用开发学习路线&#xff01;&#xff08;从零基础入门到精通&#xff09; “一杯冰美式的时间” 了解鸿蒙HarmonyOS Next应用开发路…...

pandas 将多条记录整合成一条记录,每条记录的year和month字段组成新的字段名

你可以使用 Pandas 的 pivot_table() 或 groupby() 方法&#xff0c;将多条记录整合成一条&#xff0c;并通过 year 和 month 这两个字段生成新的字段名。具体的实现方法是通过 pivot_table() 将 year 和 month 作为列标签&#xff0c;将其他列中的数据进行整合。 假设你的数据…...

C# 中的多线程同步:原子变量、原子操作、内存顺序和可见性

C# 中的多线程同步&#xff1a;原子变量、原子操作、内存顺序和可见性 引言 随着现代计算机系统的发展&#xff0c;多核处理器已经变得非常普遍。在这种环境下&#xff0c;多线程编程成为提高应用程序性能的关键技术之一。然而&#xff0c;多线程编程带来了新的挑战&#xff…...

视图(mysql)

一、什么是视图 视图是⼀个虚拟的表&#xff0c;它是基于⼀个或多个基本表或其他视图的查询结果集。视图本⾝不存储数 据&#xff0c;⽽是通过执⾏查询来动态⽣成数据。⽤⼾可以像操作普通表⼀样使⽤视图进⾏查询、更新和管 理。视图本⾝并不占⽤物理存储空间&#xff0c;它仅…...

elementui组件el-upload实现批量文件上传

el-upload组件上传文件时&#xff0c;每传一个文件会调一次接口&#xff0c;所以当上传多个文件的时候&#xff0c;有 n 个文件就要调 n 次接口。 刚好之前工作中遇到使用el-upload组件批量上传文件的需求&#xff0c;来看看怎么实现。 思路&#xff1a; 1.取消组件的自动上…...

【JAVA入门】Day45 - 压缩流 / 解压缩流

【JAVA入门】Day45 - 压缩流 / 解压缩流 文章目录 【JAVA入门】Day45 - 压缩流 / 解压缩流一、解压缩流二、压缩流 在文件传输过程中&#xff0c;文件体积比较大&#xff0c;传输较慢&#xff0c;因此我们发明了一种方法&#xff0c;把文件里的数据压缩到一种压缩文件中&#x…...

Qt_自定义信号

目录 1、自定义信号的规定 2、创建自定义信号 3、带参数的信号与槽 4、一个信号连接多个槽 5、信号与槽的断开 结语 前言&#xff1a; 虽然Qt已经内置了大量的信号&#xff0c;并且这些信号能够满足大部分的开发场景&#xff0c;但是Qt仍然允许开发者自定义信号&#…...

【运维方案】某系统运维需求方案参考(doc全原件2024)

系统运维需求方案 1服务目标 2服务人力需求、服务资源需求 3信息资产统计服务需求 4业务应用软件服务需求 5网络、安全系统运维服务需求 6主机、存储系统运维服务需求 7数据库系统运维服务需求 8终端运维服务需求 9综合布线系统服务需求 10大屏幕显示系统的维护需求 11视频会议…...

【开源实践】从零构建Voronoi泡沫结构:多胞材料建模的简易路径

1. Voronoi泡沫结构&#xff1a;从自然现象到工程应用 第一次看到Voronoi结构是在一块龟甲上——那些不规则的六边形图案让我着迷。后来才知道&#xff0c;这种被称为"泰森多边形"的几何结构不仅存在于生物组织中&#xff0c;从蜂巢到干燥的泥地&#xff0c;从植物细…...

别再死记硬背了!用这个‘水管阀门’比喻,5分钟搞懂N沟道和P沟道MOS管工作原理

水管阀门模型&#xff1a;5分钟掌握MOS管的核心逻辑 第一次接触MOS管时&#xff0c;那些载流子、耗尽层、反型层的专业术语就像一堵高墙&#xff0c;把我们对电子世界的好奇心挡在外面。但当我发现可以用厨房水龙头的原理来理解这些抽象概念时&#xff0c;一切都变得清晰起来。…...

OpenRGB终极指南:一个软件搞定所有RGB灯光控制,告别厂商软件束缚

OpenRGB终极指南&#xff1a;一个软件搞定所有RGB灯光控制&#xff0c;告别厂商软件束缚 【免费下载链接】OpenRGB Open source RGB lighting control that doesnt depend on manufacturer software. Supports Windows, Linux, MacOS. Mirror of https://gitlab.com/CalcProgra…...

Linux系统操作痕迹清理:Shell脚本实现与安全运维实践

1. 项目概述与核心价值在Linux系统上进行日常运维、故障排查或者一些自动化任务时&#xff0c;我们执行的每一条命令、访问的每一个文件&#xff0c;甚至系统本身的运行状态&#xff0c;都会留下或多或少的“痕迹”。这些痕迹&#xff0c;对于系统审计和安全分析来说是宝贵的日…...

LabVIEW多线程同步:队列、事件、信号量等核心机制详解与实战应用

1. 项目概述&#xff1a;为什么LabVIEW的多线程同步是开发者的必修课&#xff1f;如果你用过LabVIEW&#xff0c;肯定对它的图形化编程和并行执行能力印象深刻。但当你开始构建稍微复杂点的应用&#xff0c;比如一个需要同时采集数据、实时处理、记录日志和更新界面的测控系统时…...

AI应用统一管理:aiclublight轻量级启动器部署与配置指南

1. 项目概述与核心价值最近在折腾一些AI相关的本地化应用&#xff0c;发现了一个挺有意思的项目&#xff0c;叫aiclublight。这名字听起来有点“俱乐部之光”的意思&#xff0c;但它的核心其实是一个轻量级的AI应用启动器。简单来说&#xff0c;它就像是一个为你电脑上各种AI模…...

QQ截图独立版:免费获取专业级屏幕工具集的完整指南

QQ截图独立版&#xff1a;免费获取专业级屏幕工具集的完整指南 【免费下载链接】QQScreenShot 电脑QQ截图工具提取版,支持文字提取、图片识别、截长图、qq录屏。默认截图文件名为ScreenShot日期 项目地址: https://gitcode.com/gh_mirrors/qq/QQScreenShot 还在为寻找功…...

workbuddy 来解决 华南x99-4mf 设置avx2的bois信息的问题

baidu 抖音 都搜索不到 华南x99-4mf 设置avx2的bois信息 默认bois没有这个选项&#xff0c;用workbuddy 来解决 The user wants to search for information about the “华南X99-4MF” motherboard, specifically whether it supports AVX2 settings in BIOS, and wants to do…...

维吾尔语AI语音最后一公里难题:ElevenLabs+Kaldi联合方案实现方言变体(伊犁/喀什/和田)动态适配(含开源声学适配器)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;维吾尔语AI语音最后一公里难题的本质剖析 维吾尔语AI语音系统在实验室环境中已能实现较高识别准确率&#xff0c;但落地至真实场景时仍面临显著性能衰减——这一“最后一公里”并非技术迭代的自然延迟&…...

智元与宇树的机器人之争:全栈布局与低成本盈利,谁能笑到最后?

智元&#xff1a;押上一切&#xff0c;志在必成智元押上了资本、声誉&#xff0c;还有两位创始人最黄金的职业生涯&#xff0c;它没有借口和退路&#xff0c;必须成功。上半年的中国机器人圈&#xff0c;如同一场魔幻现实主义大戏。4月&#xff0c;人形机器人半程马拉松在北京亦…...