Python修改图片格式以及相对应labelme标注的Json文件

  • 前言
  • 前提条件
  • 相关介绍
  • 实验环境
  • Python修改图片格式以及相对应labelme标注的Json文件
    • 代码实现
    • 输出结果

前言

  • 本文是个人使用PythonPython处理文件的电子笔记,由于水平有限,难免出现错漏,敬请批评改正。
  • 更多精彩内容,可点击进入我的个人主页查看

前提条件

  • 熟悉Python

相关介绍

  • Python是一种跨平台的计算机程序设计语言。是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。
  • Python OS模块是负责程序与操作系统的交互,提供了访问操作系统底层的接口和非常丰富的方法用来处理文件和目录。

实验环境

  • Python 3.x (面向对象的高级语言)

Python修改图片格式以及相对应labelme标注的Json文件

{"version": "5.0.1","flags": {},"shapes": [{"label": "1","points": [[5404.0,1606.666666666667],[5557.333333333334,2166.666666666667]],"group_id": null,"shape_type": "rectangle","flags": {}}],"imagePath": "1.bmp","imageData": null,"imageHeight": 4000,"imageWidth": 8320
}

代码实现

以bmp图片转换成jpg图片为例并修改"imagePath"的内容为例,代码如下。

import os
import cv2
import jsondef bmp2jpg(in_img_path,out_dir_name): # .bmp -> .jpg# img = cv2.imread(in_img_path) # 彩色图片,位深24img = cv2.imread(in_img_path,0) # 黑白图片,位深8out_img_path = out_dir_name + in_img_path.split('/')[1][:-4] +'.jpg'# print(out_img_path)cv2.imwrite(out_img_path,img)def alter_json(in_json_path,out_dir_name):file_in = open(in_json_path, "r", encoding='utf-8')# json.load数据到变量json_datajson_data = json.load(file_in)# 修改json中的imagePath数据内容json_data["imagePath"] = json_data['imagePath'][:-4] + '.jpg'file_in.close()out_json_path = out_dir_name + in_json_path.split('/')[1]# 创建一个写文件file_out = open(out_json_path, "w", encoding='utf-8')# 将修改后的数据写入文件file_out.write(json.dumps(json_data))file_out.close()if __name__=="__main__":in_dir_name = 'origin/' # 图片和json所在文件夹out_dir_name = 'output/'all_name_list = os.listdir(in_dir_name) # 获取文件夹内所有文件名列表# 获取所有bmp图片,.bmp -> .jpgimage_name_list = [i for i in all_name_list if i.endswith('.bmp')] # 图片路径列表print(image_name_list)for image_name in image_name_list: # 遍历图片, .bmp -> .jpgin_img_path = in_dir_name + image_namebmp2jpg(in_img_path,out_dir_name)# os.remove(in_img_path) # 删除原始bmp图片# 获取所有json文件,并修改json_name_list = [i for i in all_name_list if i.endswith('.json')] # 图片路径列表print(json_name_list)for json_name in json_name_list: # 遍历json文件并修改in_json_path = in_dir_name + json_namealter_json(in_json_path,out_dir_name)

输出结果

{"version": "5.0.1","flags": {},"shapes": [{"label": "1","points": [[5404.0,1606.666666666667],[5557.333333333334,2166.666666666667]],"group_id": null,"shape_type": "rectangle","flags": {}}],"imagePath": "1.jpg","imageData": null,"imageHeight": 4000,"imageWidth": 8320
}

更多精彩内容,可点击进入Python日常小操作专栏或我的个人主页查看

Python修改图片格式以及相对应labelme标注的Json文件相关推荐

  1. 【深度学习之路记录02】python代码批量修改Labelme标注的json文件(删除标签、修改标签名)

    代码参考:https://blog.csdn.net/qq_44442727/article/details/112785978 创建自己的数据集时,经常需要一些调整,比如说修改某一批文件中已经标好的 ...

  2. LabelMe标注的.json文件批量转Dataset,通过查询到多种代码无法在我电脑上正常工作,发现他们有共同的报错,于是修改后能正常工作。

    1.写在前面 最近用到标注好的数据训练神经网络,用labelme标注好之后生成.json文件,我要实现的功能是目标分割,需要把.json文件转为VOC格式的数据.但是.json文件太多,于是在网上找一 ...

  3. labelme标注的json文件转化成ICDAR2015格式

    在转换之前一定要备份备份备份备份备份!!!!!!!!!!!!!!!!!! # -*- coding: utf-8 -*-import os import jsondef jsonTotxt(jsonf ...

  4. labelme标注的json标签转txt格式

    在机器学习训练中常常会有不同格式的标签之间的转换,本次是将json标签格式转化成txt格式,在此记录一下. 1.labelme标注: 2.json文件: {"version": & ...

  5. 【python】批量按坐标裁剪图片、ImageJ批量修改图片格式

    一.批量按坐标裁剪图片代码 # -- coding: utf-8 -- import cv2 import osdef update(input_img_path, output_img_path): ...

  6. python批量修改labelme(COCO)标注的json文件的label标签名称

    python批量修改labelme(COCO)标注的json文件的label标签名称 在深度学习的实践中,使用labelme标注软件标注好数据集之后,如果标签的名称标注错误或者需要修改,庞大的数据量依 ...

  7. 详细步骤:SCI等论文投稿,修改图片格式visio-eps,无需ps

    读研一年半了,投过了好多期刊,修改图片格式着实令人头疼,最近痛定思痛,打算一定搞懂.今天就来介绍一下不使用ps情况下,图片格式的修改. 投稿分为word和latex版的,一般word用png或者pdf ...

  8. 基于Python实现图片格式转换的小程序

    基于Python实现图片格式转换的小程序 特点: 批量处理图片 转换常见的4种图片格式 运行窗口 运行窗口-1 选择图片(可批量选择)-2 假设选中4张JEPG格式的图片 格式选择窗口-3 假设选择目 ...

  9. 【kimol君的无聊小发明】—用python写图片格式批量处理工具

    [kimol君的无聊小发明]-用python写图片格式批量处理工具 前言 一.思路分析 二.调整尺寸 三.调整大小 四.整合代码 写在最后 前言 某个夜深人静的夜晚,夜微凉风微扬,月光照进我的书房~ ...

最新文章

  1. python excel xldr xlwt xlutils 使用简介
  2. Maya摄像机动画技能学习教程
  3. linux睡眠当前进程,linux-0.11中进程睡眠函数sleep_on()解析
  4. 新闻频道管理的炫酷实现
  5. GitHub 宣布正式收购 npm | 云原生生态周报 Vol. 42
  6. bootstrap-进度条
  7. go 指针变量和普通变量的转化_7.8 C++指针变量的引用
  8. 塑壳断路器用考虑启动电流么_塑壳式断路器知识
  9. ubuntu使用KVM创建虚拟机
  10. Javascript面向对象研究心得
  11. php 对象赋值后改变成员变量影响赋值对象
  12. Apache RocketMQ 正式开源分布式事务消息
  13. oracle 的跨天查询,考勤跨天如何统计 - Oracle开发 - ITPUB论坛-中国专业的IT技术社区...
  14. 掌握spec只需读这一篇文章,CentOS、RedHat、SUSE粉的福利来了
  15. 【自动驾驶】PID实现轨迹跟踪
  16. 整流六—PWM整流器无差拍控制 二(重复控制算法)
  17. SNS背后的科:从六度分隔到无尺度网络,互联网营销
  18. 【iOS】—— Foundation框架(二)- 数组(NSArray与NSMutableArray)
  19. 快手公布于香港联交所主板上市计划详情,拟融资394.77亿港元
  20. M1芯片处理器mac能用的AI(llustrator CC 2021 直装版M1优化版)解决M1版MAC安装AI闪退问题 完美支持M1芯片处理器

热门文章

  1. 好用的git命令缩写
  2. php phantomjs 截屏,phantomjs截图
  3. ![CDATA[ ]
  4. 基于STM32F030、MAX30102血氧心率监测仪的设计(四)
  5. css 第二个孩子选择器,详解CSS3选择器:nth-child和:nth-of-type之间的差异
  6. 防松动的吊环螺钉-特尔姆吊点
  7. python推荐系统酒店_PCA实现一个简单的酒店推荐系统(附Python源码)
  8. Bower 基本应用介绍
  9. 如何把流量转化为成交量?
  10. 极限与连续知识点总结_函数极限与连续性知识点及典例