格式转化——Labelme标注好的json文件批量转为png(标签)文件(物体为红色,背景为黑色)和jpg原图
作用如题目,批量将标注好的json文件转成png标签,jpg原图,其中标签时红黑图。
代码如下:
import argparse
import base64
import json
import os
import os.path as osp
import imgviz
import PIL.Image
import yaml
from labelme.logger import logger
from labelme import utils'''single json file'''
def main():logger.warning("This script is aimed to demonstrate how to convert the ""JSON file to a single image dataset.")logger.warning("It won't handle multiple JSON files to generate a ""real-use dataset.")parser = argparse.ArgumentParser()#parser.add_argument("json_file")parser.add_argument('--jsonfiles', nargs='?', const=True, default="datasets//before", help='resume most recent training') #设置输入路径 将default里面的路径转成json文件下的路径parser.add_argument("-o", "--out", default="datasets//png") #设置输出路径 default里面的路径改为要存放标签png和原图jpg的路径args = parser.parse_args()import globjsonfiles = glob.glob(args.jsonfiles+"/*.json")print(jsonfiles)for json_file in jsonfiles:if args.out is None:out_dir = osp.basename(json_file).replace(".", "_")out_dir = osp.join(osp.dirname(json_file), out_dir)else:out_dir = args.outif not osp.exists(out_dir):os.mkdir(out_dir)data = json.load(open(json_file))imageData = data.get("imageData")if not imageData:imagePath = os.path.join(os.path.dirname(json_file), data["imagePath"])with open(imagePath, "rb") as f:imageData = f.read()imageData = base64.b64encode(imageData).decode("utf-8")img = utils.img_b64_to_arr(imageData)label_name_to_value = {"_background_": 0}for shape in sorted(data["shapes"], key=lambda x: x["label"]):label_name = shape["label"]if label_name in label_name_to_value:label_value = label_name_to_value[label_name]else:label_value = len(label_name_to_value)label_name_to_value[label_name] = label_valuelbl, _ = utils.shapes_to_label(img.shape, data["shapes"], label_name_to_value)label_names = [None] * (max(label_name_to_value.values()) + 1)for name, value in label_name_to_value.items():label_names[value] = namelbl_viz = imgviz.label2rgb(label=lbl, image=imgviz.asgray(img), label_names=label_names, loc="rb")label_name = json_file.split('\\')[-1].replace('.json','.png')image_name = json_file.split('\\')[-1].replace('.json','.jpg')PIL.Image.fromarray(img).save(osp.join(out_dir, image_name))utils.lblsave(osp.join(out_dir, label_name), lbl)PIL.Image.fromarray(lbl_viz).save(osp.join(out_dir, "label_viz.png"))with open(osp.join(out_dir, "label_names.txt"), "w") as f:for lbl_name in label_names:f.write(lbl_name + "\n")# 生成info.yaml文件# logger.warning('info.yaml is being replaced by label_names.txt')# info = dict(label_names=label_names)# with open(osp.join(out_dir, 'info.yaml'), 'w') as f:# yaml.safe_dump(info, f, default_flow_style=False)logger.info("Saved to: {}".format(out_dir))if __name__ == "__main__":main()
相关文章:
格式转化——Labelme标注好的json文件批量转为png(标签)文件(物体为红色,背景为黑色)和jpg原图
作用如题目,批量将标注好的json文件转成png标签,jpg原图,其中标签时红黑图。 代码如下: import argparse import base64 import json import os import os.path as osp import imgviz import PIL.Image import yaml from labelm…...
力扣刷题--2535. 数组元素和与数字和的绝对差【简单】
题目描述 给你一个正整数数组 nums 。 元素和 是 nums 中的所有元素相加求和。 数字和 是 nums 中每一个元素的每一数位(重复数位需多次求和)相加求和。 返回 元素和 与 数字和 的绝对差。 注意:两个整数 x 和 y 的绝对差定义为 |x - y| 。…...
2024年【危险化学品经营单位安全管理人员】考试报名及危险化学品经营单位安全管理人员找解析
题库来源:安全生产模拟考试一点通公众号小程序 危险化学品经营单位安全管理人员考试报名考前必练!安全生产模拟考试一点通每个月更新危险化学品经营单位安全管理人员找解析题目及答案!多做几遍,其实通过危险化学品经营单位安全管…...
IntelliJ IDEA集成Baidu Comate,商城系统支付交易功能开发实战
文章目录 Baidu Comate介绍安装配置体验安装插件配置体验注释生成代码技术问答 实战设计表生成代码导入数据 总结 Baidu Comate介绍 在科技互联网飞速发展的今天,百度凭借其深厚的技术积累和创新能力,推出了一款名为Baidu Comate智能代码助手的产品。该…...
20212313 2023-2024-2 《移动平台开发与实践》第5次作业
20212313 2023-2024-2 《移动平台开发与实践》第5次作业 1.实验内容 设计并开发一个地图应用系统。 该实验需提前申请百度API Key,调用接口实现百度地图的定位功能、地图添加覆盖物和显示文本信息。 2.实验过程 2.1 获取SHA1 (1)打开控制台…...
Python图形界面(GUI)Tkinter笔记(十二):用【Entry()】实现单行文本输入(3)
Tkinter库中的单行文本输入框(Entry)除了与get()方法组合产生多姿多彩的反应,还可以与insert()方法组合而产生新的功能。例如用于用户不作任何输入就用默认值当作用户的输入这种场境,或在输入文本中加入指定的字符等。 其余笔记:【Python图形界面(GUI)Tkinter笔记(总目录…...
前端渲染页面的原理
之前一直不愿意写一篇关于原理的,因为说起来实在是太繁杂,要写得细,码字梳理,计算下来起码都要差不多三周。以前一直躲避这个事情,现在反正有时间,为了不荒废自己,那就从头捋一遍。也方便自己后…...
【一竞技DOTA2】RAMZES666替补参加裂变联赛
1、根据主办方文件,RAMZES666将继续作为Tundra战队替补参加裂变联赛。该比赛为欧洲线上赛,于5月27日-30日举行,总奖金8万美元。 除此之外,Nigma战队在上个月宣布四号位Matthew离队后,也选择启用老队员GH参赛。而在本月初让ah fu转回教练、携替补Thiolicor出战PGL瓦拉几亚的Secr…...
1109 擅长C(测试点0,1,2,3)
当你被面试官要求用 C 写一个“Hello World”时,有本事像下图显示的那样写一个出来吗? ..C.. .C.C. C...C CCCCC C...C C...C C...C CCCC. C...C C...C CCCC. C...C C...C CCCC. .CCC. C...C C.... C.... C.... C...C .CCC. CCCC. C...C C...C C...C C…...
北京新高度画室:端午假期免费吃,住,学!
经历了联考校考的过关斩将 2024届追梦人终于要迎来最后一战高考 承载着梦想的日子在一天天靠近 千里遥程将要看到希望的曙光 新高度祝所有高三学子高考顺利金榜题名 梦想是一场接力赛 新高度画室2025届集训已经开始 如果你错过了清明、错过了五一 那么高考&端午试学…...
电脑重要文件如何加密保护?教你两种方法
加密是保护电脑重要文件的常见方法,可以有效避免文件数据泄露。那么,电脑重要文件该如何加密保护呢?下面小编就来教你两种方法,帮助你解决文件安全问题。 超级加密3000 超级加密3000是一款专业的电脑数据加密软件,可以…...
新零售收银解决方案:传统门店超市的数字化-亿发
在数字化浪潮的推动下,零售行业正经历着前所未有的变革。阿里巴巴提出的“新零售”概念,不仅仅是一个商业口号,它代表了一种全新的商业模式和运营理念。随着时代的进步和消费需求的不断升级,新零售的兴起已成为行业发展的必然趋势…...
独家揭秘!Amazon、lazada、Shopee测评自养号,新手也能秒变高手!
近年来,随着国内卖家涌入跨境电商平台,市场竞争愈加激烈。为了迅速占领市场,测评变得至关重要。然而,真人测评供不应求,服务商账号质量不一,且存在高权重账号稀缺和黑卡下单风险。因此,许多大卖…...
企企通入选第一新声《2024年中国CIO数字化产品选型白皮书》供应链数字产品可信名录
近日,第一新声研究院根据多年产业数字化研究,历经近半年时间,并综合近200位CIO调研与推荐意见,发布《2024年中国CIO数字化产品选型白皮书》,并推出企业CIO选型指南及可信产品名录。企企通凭借其优秀的采购数字化与供应…...
Linux中 “权限设置修改”
目录 一、权限 (1)权限三大类: (2)文件的权限: (3)目录的权限: (4)用户的角色: 二、文件的权限位 三、修改用户权限 …...
9.1 Go语言入门(环境篇)
Go语言入门(环境篇) 目录一、什么是Go语言二、下载安装配置Go语言开发环境1. 下载2. 安装3. 配置环境变量4. 安装环境验证 三、 开发工具1. 下载2. 安装3. 激活4. 配置SDK 四、 创建go工程文件并运行1. 创建go工程2. 示例代码3. 运行代码 目录 一、什么…...
简单的网页分享按钮代码
创建一个网页分享按钮通常涉及到HTML、CSS和JavaScript的组合使用。下面是一个简单的示例代码,展示了如何创建一个包含微博、QQ和QQ空间分享的按钮。请注意,这只是一个前端的实现示例,实际分享功能需要依赖于相应的社交媒体平台提供的API或分…...
ld链接文件
文章目录 1. sections缩写2. 链接脚本2.1 MEMORY(内存命令)2.1.1 作用2.1.2 格式 2.2 SECTIONS(段命令)2.2.1 作用2.2.2 格式 2.3 特殊符号含义2.4 通配符2.5 Eg 1. sections缩写 2. 链接脚本 https://www.cnblogs.com/jianhua19…...
React-事件绑定
React基础事件绑定 语法:on事件名称{事件处理程序},整体上遵循驼峰命名法 使用事件对象参数 语法:在事件回调函数中设置形参e...
使用“tcpdump”查看原始数据包
使用“tcpdump”查看原始数据包 尽管像 Snort 这样的工具可以出色地筛选通过我们网络的所有内容,但有时需要查看原始数据。为此,我们最好的工具是“tcpdump”。 使用 tcpdump 的最基本方法是简单地发出以下命令: tcpdump 使用 -v 选项可以…...
Prompt 缓存,一次讲明白
每当一个 AI Agent 往前走一步,它其实都在交一笔税。它会重新读取所有内容。系统提示词。 工具定义。 项目上下文。 三轮前已经加载过的内容。每一轮都重新读一遍。这就是 context tax。对长时间运行的 Agent 工作流来说,它往往是整个 AI 基础设施里最贵…...
都在喊难,它却狂赚!深度扒开长鑫科技底牌:什么才是决定生死的产业势?
2026年的商业世界,正在经历一场冰火两重天的考验。 一边,是无数传统企业在需求萎缩、价格内卷的泥潭里苦苦挣扎,老板们每天为了几毛钱的利润拼得头破血流;而另一边,一份堪称“核弹级”的财报,直接炸翻了整个…...
Unity中用Sentis部署YOLOv8 Nano实现移动端实时目标检测
1. 为什么是YOLOv8 Nano Sentis?不是ONNX Runtime,也不是TensorRT?去年在做一个AR巡检项目时,我卡在物体检测环节整整三周。客户要求在中端安卓手机(骁龙665)上实现每秒15帧以上的实时检测,同时…...
JWT密钥轮换静默失效的热修复实战指南
1. 这不是漏洞公告,而是一份热修复作战手册Seedance2.0 v2.0.3上线刚满72小时,我们团队在灰度环境做JWT签名校验一致性压测时,发现一个反直觉现象:新签发的token在旧服务节点上能通过验签,但旧token在新节点上却频繁失…...
深度解析DDoS攻击:运作机制与防御体系构建
深度解析 DDoS 攻击:运作机制与防御体系构建适用读者:安全工程师、运维架构师、等保/合规建设人员目标:理解 DDoS 各类攻击原理,并建立分层的纵深防御体系(云端清洗 本地抗损 应用层缓释)一、DDoS 基本概…...
2026 网络安全渗透测试行业报告|机遇与前景
随着数字化转型的深入和网络威胁的日益复杂化,网络安全渗透测试行业在2025年迎来了前所未有的发展机遇与挑战。本文基于最新行业数据、招聘趋势与技术演进,全面剖析当前渗透测试行业的市场规模、人才供需、薪资水平、技术变革及未来发展方向,…...
一文搞懂:Git分支管理与团队协作规范——从GitFlow到GitHub Flow,从rebase到merge,打造高效协作流
📌 写在前面以前自己一个人写项目的时候,Git对我来说就是个“高级另存为”:一个master分支从头走到尾,写完就git push,从没觉得分支管理有什么难的。直到最近和朋友一起开发一个项目,问题来了:他…...
AI行业4大神仙岗位,0基础也能拿下?薪资直逼200万!
文科生,能进AI行业吗? 毕业做了两年行政,现在想转行,是不是来不及了? 看到AI岗位都要写代码,我连Python都没碰过,是不是没戏了? … 想一想都是问题,做一做一定会有答案&a…...
擎天租与京东集团达成战略合作,机器人服务加速进入全域场景
5月21日,擎天租宣布与京东集团达成全面战略合作,双方将围绕产品解决方案共建、渠道供应链赋能及规模化采购等方面展开深度合作。此次战略联手,不仅是两家标杆企业在各自优势领域的双向赋能,也将推动RaaS(Robot as a Se…...
D1094UK,500MHz频段下20W高功率输出的单端式硅RF MOSFET射频晶体管
简介今天我要向大家介绍的是 TT Electronics / Semelab 的硅RF MOSFET晶体管——D1094UK。这是一款专为VHF/UHF通信频段设计的单端式射频功率场效应管,在28V工作电压、500MHz频率下可提供20W的输出功率。作为一款高性能射频器件,它具备极低的反向传输电容…...
