json转yolo格式

json转yolo格式

视觉分割得一些标注文件是json格式,比如,舌头将这个舌头区域分割出来(用mask二值图的形式),对舌头的分割第一步是需要检测出来,缺少数据集,可以使用分割出来的结果,将分割的结果转化成可以用于目标检测的数据集。
下面是将json文件转化成一个yolov8的数据格式,首先看一下json的数据格式:

json的数据格式

我关注的就是"shapes"这个字段因为它是我舌头区域的坐标点,其次关注的是 “imageHeight”: 图片的高, “imageWidth”: 图片的宽。这些在生成yolov8格式的检测框的时候啥都有用。

{"version": "5.2.1","flags": {},"shapes": [{"fill_color": null,"line_color": null,"label": "tongue","points": [[700.361963190184,510.8926380368097],.......[573.9815950920246,515.1871165644171],  ],"group_id": null,"description": null,"shape_type": "polygon","flags": {}}],"imagePath": "0000.jpg","imageData": "iVBORw0KGgoA.....................AAAAAElFTkSuQmCC","imageHeight": 777,"imageWidth": 1286,"fillColor": [255,0,0,128],"lineColor": [0,255,0,128]
}

yolo数据格式

对应的yolov8的数据格式就是yolo系列的标签存储形式

yolo系列对应的是[class x y w’ h’]。注意 class也就是label标签, x y 就是(x, y)表示中心横坐标与图像宽度、高度的比值,w’ :检测框box宽度与图像宽度比值,h’:检测框高度与图像高度比值。

# 一个txt文件
0 0.507394403152401 0.5280297826310096 0.49941035598087944 0.33793653425555276
1 0.407394403152401 0.9280297826310096 0.19941035598087944 0.33793653425555276
2 0.37394403152401 0.5280297826310096 0.19941035598087944 0.13793653425555276

代码

def json_to_yolov8(data):# 获取原图的宽和高image_width = data['imageWidth']image_height = data['imageHeight']for shape in data['shapes']:if shape['label'] == 'tongue':points = shape['points']x_min = min(point[0] for point in points)x_max = max(point[0] for point in points)y_min = min(point[1] for point in points)y_max = max(point[1] for point in points)x_center = (x_min + x_max) / 2y_center = (y_min + y_max) / 2w = x_max - x_minh = y_max - y_minx_center /= image_widthy_center /= image_heightw /= image_widthh /= image_heightyolov8_box = [0, x_center, y_center, w, h]return yolov8_box# Replace 'your_json_file.json' and 'your_image.jpg' with the actual paths
json_folder = "path/to/json"  # 输入json文件的路径位置
yolov8_labels = 'path/to/txt' # 输出的目标文件存放路径
for json_file in os.listdir(json_folder):if json_file.endswith('.json'):json_name = os.path.basename(json_file).split('.')[0]output_file = os.path.join(yolov8_labels, f'{json_name}.txt')jsonfile = os.path.join(json_folder, f'{json_name}.json')with open(jsonfile, 'r') as file:data = json.load(file)yolov8_box = json_to_yolov8(data)with open(output_file, 'w') as f:result_str = ' '.join(str(data) for data in yolov8_box)f.write(result_str)
print("over!")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/206866.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

无公网IP环境如何SSH远程连接Deepin操作系统

文章目录 前言1. 开启SSH服务2. Deppin安装Cpolar3. 配置ssh公网地址4. 公网远程SSH连接5. 固定连接SSH公网地址6. SSH固定地址连接测试 前言 Deepin操作系统是一个基于Debian的Linux操作系统,专注于使用者对日常办公、学习、生活和娱乐的操作体验的极致&#xff0…

数据仪表盘设计:可视化数据指标和报告

写在开头 在信息爆炸的时代,数据不再是简单的数字和图表,而是一种有机的信息体系。如何将这些琳琅满目的数据以一种直观而高效的方式展示,成为企业决策者和分析师们共同关注的问题。本文将带您深入学习如何设计和创建数据仪表盘,使数据指标和报告以一目了然的方式呈现。 …

Python---time库

目录 时间获取 时间格式化 程序计时 time库包含三类函数: 时间获取:time() ctime() gmtime() 时间格式化:strtime() strptime() 程序计时:sleep() perf_counter() 下面逐一介绍&#…

H3.3K27M弥漫性中线胶质瘤的反义寡核苷酸治疗

今天给同学们分享一篇实验文章“Antisense oligonucleotide therapy for H3.3K27M diffuse midline glioma”,这篇文章发表在Sci Transl Med期刊上,影响因子为17.1。 结果解读: CRISPR-Cas9消耗H3.3K27M恢复了H3K27三甲基化,并延…

Echarts地图案例及常见问题

前言 ECharts 是一个使用 JavaScript 实现的开源可视化库,它可以帮助用户以简单的方式创建复杂的时间序列、条形图、饼图、地图等图形。 Echarts绘制地图的案例 展示了中国各省份的人口数量 var myChart = echarts.init(document.getElementById(main)); var option = {t…

【TailwindCSS】

TailwindCSS作为一种现代化的CSS框架,以其高度的定制性和灵活性受到前端开发者的青睐。本文旨在提供一份详细的TailwindCSS使用教程,特别适用于Vite和Vue框架的组合。 我们将从安装开始,深入探讨如何在项目中有效利用TailwindCSS的各项功能&…

在AWS Lambda上部署标准FFmpeg工具——Docker方案

大纲 1 确定Lambda运行时环境1.1 Lambda系统、镜像、内核版本1.2 运行时1.2.1 Python1.2.2 Java 2 启动EC23 编写调用FFmpeg的代码4 生成docker镜像4.1 安装和启动Docker服务4.2 编写Dockerfile脚本4.3 生成镜像 5 推送镜像5.1 创建存储库5.2 给EC2赋予角色5.2.1 创建策略5.2.2…

【带头学C++】----- 九、类和对象 ---- 9.10 C++设计模式之单例模式设计

❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️麻烦您点个关注,不迷路❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️ 目 录 9.10 C设计模式之单例模式设计 举例说明: 9.10 C设计模式之单例模式设计 看过我之前的文章的,简单讲解过C/Q…

遥测终端机RTU:实现远程监测和控制的重要工具

遥测终端机RTU对设备进行远程监测和控制,支持采集和传输数据,以实现对工业过程、公用事业、水文和环境的监测和管理。 遥测终端机RTU工作原理 计讯物联遥测终端机RTU通过网口、串口进行传感器/设备等现场数据采集,将其转换为数字信号&#xf…

【LeetCode】202. 快乐数

202. 快乐数 难度:简单 题目 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变…

高校网站建设的效果如何

高校有较高的信息承载需求、招生宣传、学校内容呈现、内部消息触达等需求,对高校来说,如今互联网深入生活各个场景,无论学校发展、外部拓展还是内部师生互动、通知触达等都需要完善。 除了传统传单及第三方平台展示外,学校构建属…

C#-数组池减少GC工作

数组池减少GC工作 通过ArrayPool类(名称空间System.Buffers)使用数组池,可减少垃圾收集器的工作,ArrayPool管理一个数组池,数组可以从这租借,并返回池中,内存在ArrayPool中管理。 创建ArrayPool…

Html5响应式全开源网站建站源码系统 附带完整的搭建教程

Html5响应式全开源网站建站源码系统是基于Html5、CSS3和JavaScript等技术开发的全开源网站建站系统。它旨在为初学者和小型企业提供一套快速、简便的网站建设解决方案。该系统采用响应式设计,可以自适应不同设备的屏幕大小,提高用户体验。同时&#xff0…

Clean My Mac X2024解锁完整版本

Clean My Mac X是Mac上一款美观易用的系统优化清理工具,也是小编刚开始用Mac时的装机必备。垃圾需要时时清,电脑才能常年新。Windows的垃圾清理工具选择有很多,但是Mac的清理工具可选择的就很少。 今天给大家推荐大名鼎鼎的Clean My Mac X&a…

elasticsearch-head 启动教程

D:\elasticsearch-head-master>grunt server ‘grunt’ 不是内部或外部命令,也不是可运行的程序 或批处理文件。 npm install -g grunt-clinpm install

Leetcode—190.颠倒二进制位【简单】

2023每日刷题&#xff08;五十二&#xff09; Leetcode—190.颠倒二进制位 算法思路 实现代码 class Solution { public:uint32_t reverseBits(uint32_t n) {uint32_t res 0;for(int i 0; i < 32 && n > 0; i) {res | (n & 1) << (31 - i);n >&…

【华为数据之道学习笔记】1-1非数字原生企业的特点

非数字原生企业的数字化转型挑战 软件和数据平台为核心的数字世界入口&#xff0c;便捷地获取和存储了大量的数据&#xff0c;并开始尝试通过机器学习等人工智能技术分析这些数据&#xff0c;以便更好地理解用户需求&#xff0c;增强数字化创新能力。部分数字原生企业引领着云计…

第二十一章,网络通信

网络协议 IP协议 IP是Internet Protocol的简称&#xff0c;是一种网络协议。Internet 网络采用的协议是TCP/IP协议&#xff0c;其全称是Transmission Control Protocol/Internet Protocol。Internet 依靠TCP/IP协议&#xff0c;在全球范围内实现了不同硬件结构、不同操作系统…

浅谈Android 14适配

引言 距离 Android 14 发布已经有一段时间了&#xff0c;趁着这次机会&#xff0c;了解和熟悉了 Android 14 更新的内容&#xff0c;现在来和大家分享一下&#xff0c;大家喜欢的话可以点个赞多多支持一下&#xff0c;文章的内容按照适配内容的重要程度进行排序。 targetSdk …

机器学习实战:预测波士顿房价

前言&#xff1a; Hello大家好&#xff0c;我是Dream。 今天来学习一下机器学习中一个非常经典的案例&#xff1a;预测波士顿房价&#xff0c;在此过程中也会补充很多重要的知识点&#xff0c;欢迎大家一起前来探讨学习~ 一、导入数据 在这个项目中&#xff0c;我们利用马萨诸…