yolo预标注的txt转换成labelme中segment的json

news/2024/5/19 11:25:31/文章来源:https://blog.csdn.net/weixin_43788282/article/details/137599249

前言

在yolo预标注的时候,想把保存的txt转换成labelme中segment的json,于是写了下面的脚本。请添加图片描述


1.引入库

完整代码:

import os
import json
from tqdm import tqdmdef get_image_size(image_path):from PIL import Imagewith Image.open(image_path) as img:width, height = img.sizereturn width, heightdef txt_to_json(txt_file, image_folder):image_file = os.path.join(image_folder, os.path.splitext(os.path.basename(txt_file))[0] + '.png')image_width, image_height = get_image_size(image_file)shapes = []with open(txt_file, 'r') as f:for line in f:coords = line.strip().split()if len(coords) > 1:  # 至少包含 x 和 y 两个坐标label = coords[0]points = [[float(coords[i]) * image_width, float(coords[i+1]) * image_height] for i in range(1, len(coords), 2)]shape = {"label": 'stone',"points": points,"group_id": None,"shape_type": "polygon","flags": {}}shapes.append(shape)return {"version": "5.1.1","flags": {},"shapes": shapes,"imagePath": os.path.basename(image_file),"imageData": None,"imageHeight": image_height,"imageWidth": image_width}def convert_folder_to_json(folder_path, image_folder, output_folder):os.makedirs(output_folder, exist_ok=True)for filename in tqdm(os.listdir(folder_path)):if filename.endswith('.txt'):txt_file = os.path.join(folder_path, filename)json_output_file = os.path.join(output_folder, os.path.splitext(filename)[0] + '.json')json_data = txt_to_json(txt_file, image_folder)with open(json_output_file, 'w') as json_file:json.dump(json_data, json_file, indent=4)if __name__ == '__main__':folder_path = r'C:\Users\Lenovo\Downloads\predict3\labels'  # 修改为你的标签文件夹路径image_folder = r'C:\Users\Lenovo\Downloads\predict3\images'  # 修改为你的图片文件夹路径output_folder = r'C:\Users\Lenovo\Downloads\predict3\labels_json'  # 修改为你的输出文件夹路径convert_folder_to_json(folder_path, image_folder, output_folder)

注:这里imageData非常难搞,因为labelme有加密格式,所以设置成null也是可以运行的。

注:这里只写了一个标签,大家可以根据"label": label再修改对应的!

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

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

相关文章

Spring boot如何执行单元测试?

Spring Boot 提供了丰富的测试功能,主要由以下两个模块组成: spring-boot-test:提供测试核心功能。spring-boot-test-autoconfigure:提供对测试的自动配置。 Spring Boot 提供了一个 spring-boot-starter-test一站式启动器&…

unipush+个推实现消息推送

1.注册个推平台的帐号个推,专业的数据智能服务商-为垂直领域提供数据智能解决方案 2.应用列表中选择新增应用/服务 3.填写下应用信息4.创建好应用后在manifest.json中的sdkConfigs配置上写入appid、appkey、appsecret "sdkConfigs" : {"ad" :…

硬件学习件Cadence day16 做个笔记,BOM 位号这个参数输出的两种情况。

1. BOM 中位号有3种情况 1. 一种是位号生成时多行,每行是固定的位数。(如下图所示) 2. 一种是位号生成时只有一行,但是可以使用表格中自动换行功能,给他换行,但是这个位号本质上只有一行,只是因…

基于深度学习的乳腺癌智能检测分割与诊断系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标分割、人工智能

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

虚拟网络设备的真正使命:实现有控制的通信

在数字化时代📲,网络安全🔒成为了企业和个人防御体系中不可或缺的一部分。随着网络攻击的日益复杂和频繁🔥,传统的物理网络安全措施已经无法满足快速发展的需求。虚拟网络设备🖧,作为网络架构中…

一起学习python——基础篇(5)

今天讲一下python的数据类型。 数据类型主要分为文本类型、数值类型、序列类型、映射类型、集合类型、布尔类型、二进制类型六大类型。 文本类型:str 数值类型: int, float, complex 序列类型: list, tuple, range 映射类型:…

【数据结构与算法】搜索算法(深度优先搜索 DFS和广度优先搜索 BFS)以及典型算法例题

目录 搜索算法(深度优先搜索DFS和广度优先搜索BFS)以及典型算法例题深度优先搜索 (Depth First Search 简称 DFS)DFS 的设计步骤深度优先搜索(DFS)算法例题例题一:N皇后问题例题二:路…

SQL注入sqli_labs靶场第五、六题

第五题 根据报错信息,判断为单引号注入 没有发现回显点 方法:布尔盲注(太耗时,不推荐使用) 1)猜解数据库名字:(所有ASCII码值范围:0~127) ?id1 and length…

成功解决> 错误: 无效的源发行版:17

运行项目的时候出现下面的报错: Execution failed for task ‘:device_info_plus:compileDebugJavaWithJavac’. 错误: 无效的源发行版:17 原因:没有设置好自己项目的JDK版本 解决:1.检查自己项目的JDK版本 将自己的项目改为JDK 1…

MySQL高级(索引分类-聚集索引-二级索引)

目录 1、主键索引、唯一索引、常规索引、全文索引 2、 聚集索引、二级索引 3、回表查询 4、通过id查询和通过name查询那个执行效率高? 5、 InnoDB主键索引的 B tree 高度为多高呢? 1、主键索引、唯一索引、常规索引、全文索引 在MySQL数据库&#xff0c…

C++的stack和queue类(一):适配器模式、双端队列与优先级队列

目录 基本概念 stack的使用 queue的使用 适配器模式 stack.h test.cpp 双端队列-deque 仿函数 优先队列 priority_queue的使用 queue.h文件 stack.h文件 test.cpp文件 日期类的比较 商品的比较 结论 基本概念 1、stack和queue不是容器而是容器适配器&…

性能优化原则

相关链接:【运行环境】加载资源的形式 性能优化 1 性能优化原则 多使用内存、缓存或其他方法 减少CPU计算量,减少网络加载耗时 (适用于所有编程的性能优化----空间换时间) 2 从何入手 性能优化-让加载更快 减少资源体积&#x…

每日一题 — 最大连续 1 的个数III

解法一:暴力枚举 先定义left和right双指针,left先固定在起始位置,遍历right当值等于1的时候,直接跳过,等于0的时候,zero计数器加一当zero等于k的时候,就开始记录此时最大长度是多少然后left加一…

深度剖析:网络安全中的红蓝对抗策略

红蓝对抗 红蓝对抗服务方案 在蓝队服务中,作为攻击方将开展对目标资产的模拟入侵,寻找攻击路径,发现安全漏洞和隐患。除获取目标系统的关键信息(包括但不限于资产信息、重要业务数据、代码或管理员账号等)外&#x…

Python | 超前滞后分析

Nino SST Indices (Nino 12, 3, 3.4, 4; ONI and TNI) 有几个指标用于监测热带太平洋,所有这些指标都是基于海表温度(SST)异常在一个给定的区域的平均值。通常,异常是相对于30年的周期来计算的。厄尔尼诺3.4指数(Nio 3.4 index)和海洋厄尔尼诺指数(Ocea…

Chrome谷歌下载入口

​hello,我是小索奇 发现好多人说谷歌浏览器在哪里下载呀,哪里可以找到? 你可能会心想,一个浏览器你还不会下载啊? 还真是,有很多伙伴找不到下载入口,为什么呢? Bing进行搜索&am…

java程序 .exe启动nginx防止重复启动,已解决

java代码生成好的.exe启动nginx服务程序 根据nginx占用端口来解决nginx服务重复启动问题(下面代码了解代码逻辑后根据自己的业务需求修改即可) 代码: package org.example;import javax.swing.*; import java.awt.*; import java.io.*; …

C#/WPF 使用开源Wav2Lip做自己的数字人(无需安装环境)

实现效果 Speaker Wav2Lip概述 2020年,来自印度海德拉巴大学和英国巴斯大学的团队,在ACM MM2020发表了的一篇论文《A Lip Sync Expert Is All You Need for Speech to Lip Generation In The Wild 》,在文章中,他们提出一个叫做Wa…

ChatGPT 4.0报错 :“Hmm…something seems to have gone wrong.”

ChatGPT报错,GPT-3.5模型正常,GPT-4.0报错:“Hmm…something seems to have gone wrong.” 说明:嗯…好像出了什么问题。 原因: 部分用户在使用GPT-3.5模型时提问正常,GPT-4.0模型提问时,出现这…

Open CASCADE学习|求曲面的参数空间

在三维空间中,任意的曲面都可以通过特定的方法映射到一个二维参数平面上,从而对其进行详细的几何分析和处理。首先,我们需要从三维模型中提取出特定的曲面,这通常被称为“Face”。一个face可以被视为三维空间中的一个封闭区域&…