Python将Labelme文件的标注信息绘制到图片上

Python将Labelme文件的标注信息绘制到图片上

  • 前言
  • 前提条件
  • 相关介绍
  • 实验环境
  • Python将Labelme文件的标注信息绘制到图片上
    • 代码实现
    • 输出结果

在这里插入图片描述

前言

  • 由于本人水平有限,难免出现错漏,敬请批评改正。
  • 更多精彩内容,可点击进入Python日常小操作专栏、OpenCV-Python小应用专栏、YOLO系列专栏、自然语言处理专栏或我的个人主页查看
  • YOLOv8 Ultralytics:使用Ultralytics框架训练RT-DETR实时目标检测模型
  • 基于DETR的人脸伪装检测
  • YOLOv7训练自己的数据集(口罩检测)
  • YOLOv8训练自己的数据集(足球检测)
  • YOLOv5:TensorRT加速YOLOv5模型推理
  • YOLOv5:IoU、GIoU、DIoU、CIoU、EIoU
  • 玩转Jetson Nano(五):TensorRT加速YOLOv5目标检测
  • YOLOv5:添加SE、CBAM、CoordAtt、ECA注意力机制
  • YOLOv5:yolov5s.yaml配置文件解读、增加小目标检测层
  • Python将COCO格式实例分割数据集转换为YOLO格式实例分割数据集
  • YOLOv5:使用7.0版本训练自己的实例分割模型(车辆、行人、路标、车道线等实例分割)
  • 使用Kaggle GPU资源免费体验Stable Diffusion开源项目

前提条件

  • 熟悉Python

相关介绍

  • Python是一种跨平台的计算机程序设计语言。是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。
  • PyTorch 是一个深度学习框架,封装好了很多网络和深度学习相关的工具方便我们调用,而不用我们一个个去单独写了。它分为 CPU 和 GPU 版本,其他框架还有 TensorFlow、Caffe 等。PyTorch 是由 Facebook 人工智能研究院(FAIR)基于 Torch 推出的,它是一个基于 Python 的可续计算包,提供两个高级功能:1、具有强大的 GPU 加速的张量计算(如 NumPy);2、构建深度神经网络时的自动微分机制。
  • YOLOv5是一种单阶段目标检测算法,该算法在YOLOv4的基础上添加了一些新的改进思路,使其速度与精度都得到了极大的性能提升。它是一个在COCO数据集上预训练的物体检测架构和模型系列,代表了Ultralytics对未来视觉AI方法的开源研究,其中包含了经过数千小时的研究和开发而形成的经验教训和最佳实践。
  • Labelme是一款图像标注工具,由麻省理工(MIT)的计算机科学和人工智能实验室(CSAIL)研发。它是用Python和PyQT编写的,开源且免费。Labelme支持Windows、Linux和Mac等操作系统。
  • 这款工具提供了直观的图形界面,允许用户在图像上标注多种类型的目标,例如矩形框、多边形、线条等,甚至包括更复杂的形状。标注结果以JSON格式保存,便于后续处理和分析。这些标注信息可以用于目标检测、图像分割、图像分类等任务。
  • 总的来说,Labelme是一款强大且易用的图像标注工具,可以满足不同的图像处理需求。
  • Labelme标注json文件是一种用于存储标注信息的文件格式,它包含了以下几个主要的字段:
    • version: Labelme的版本号,例如"4.5.6"。
    • flags: 一些全局的标志,例如是否是分割任务,是否有多边形,等等。
    • shapes: 一个列表,每个元素是一个字典,表示一个标注对象。每个字典包含了以下几个字段:
      • label: 标注对象的类别名称,例如"dog"。
      • points: 一个列表,每个元素是一个坐标对,表示标注对象的边界点,例如[[10, 20], [30, 40]]。
      • group_id: 标注对象的分组编号,用于表示属于同一组的对象,例如1。
      • shape_type: 标注对象的形状类型,例如"polygon",“rectangle”,“circle”,等等。
      • flags: 一些针对该标注对象的标志,例如是否是难例,是否被遮挡,等等。
    • lineColor: 标注对象的边界线颜色,例如[0, 255, 0, 128]。
    • fillColor: 标注对象的填充颜色,例如[255, 0, 0, 128]。
    • imagePath: 图像文件的相对路径,例如"img_001.jpg"。
    • imageData: 图像文件的二进制数据,经过base64编码后的字符串,例如"iVBORw0KGgoAAAANSUhEUgAA…"。
    • imageHeight: 图像的高度,例如600。
    • imageWidth: 图像的宽度,例如800。

以下是一个Labelme标注json文件的示例:

{"version": "4.5.6","flags": {},"shapes": [{"label": "dog","points": [[121.0,233.0],[223.0,232.0],[246.0,334.0],[121.0,337.0]],"group_id": null,"shape_type": "polygon","flags": {}}],"lineColor": [0,255,0,128],"fillColor": [255,0,0,128],"imagePath": "img_001.jpg","imageData": "iVBORw0KGgoAAAANSUhEUgAA...","imageHeight": 600,"imageWidth": 800
}

实验环境

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

Python将Labelme文件的标注信息绘制到图片上

  • 项目结构
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

代码实现

import os
import cv2
import json
import copydef query_info_in_json_and_rectangle(in_img_path,in_json_path,out_img_path):'''查询json文件的信息并绘制'''img = cv2.imread(in_img_path)with open(in_json_path,'r') as f:json_data = json.load(f)# print(json_data)# 以查询label信息为例,比如输出'label' == "49"的标注信息json_data_shape =  copy.deepcopy(json_data['shapes'])if json_data_shape != []:for i in json_data_shape:x1 = int(i['points'][0][0])y1 = int(i['points'][0][1])x2 = int(i['points'][1][0])y2 = int(i['points'][1][1])xmin = min(x1,x2)ymin = min(y1,y2)xmax = max(x1,x2)ymax = max(y1,y2)label_name = i['label']cv2.rectangle(img,(xmin,ymin),(xmax,ymax),(0, 0, 255), 2)cv2.putText(img,label_name,(xmin-5,ymin), cv2.FONT_HERSHEY_SIMPLEX, 1,(255,0,0),3)cv2.imwrite(out_img_path,img)else: # 无标注信息保存原图cv2.imwrite(out_img_path,img)if __name__=="__main__":in_img_dir = 'images/'in_json_dir = 'jsons/'output_dir = 'output/'if not os.path.exists(output_dir):os.mkdir(output_dir) img_name_list = [i for i in os.listdir(in_img_dir) if i.endswith('.png')]# print(img_name_list)json_name_list = [i for i in os.listdir(in_json_dir) if i.endswith('.json')]# print(json_name_list)for img_name in img_name_list:in_img_path = in_img_dir + img_namein_json_path = in_json_dir + img_name[:-4]+'.json'out_img_path = output_dir + img_name# 将Labelme文件的标注信息绘制到图片上query_info_in_json_and_rectangle(in_img_path,in_json_path,out_img_path)

输出结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 由于本人水平有限,难免出现错漏,敬请批评改正。
  • 更多精彩内容,可点击进入Python日常小操作专栏、OpenCV-Python小应用专栏、YOLO系列专栏、自然语言处理专栏或我的个人主页查看
  • YOLOv8 Ultralytics:使用Ultralytics框架训练RT-DETR实时目标检测模型
  • 基于DETR的人脸伪装检测
  • YOLOv7训练自己的数据集(口罩检测)
  • YOLOv8训练自己的数据集(足球检测)
  • YOLOv5:TensorRT加速YOLOv5模型推理
  • YOLOv5:IoU、GIoU、DIoU、CIoU、EIoU
  • 玩转Jetson Nano(五):TensorRT加速YOLOv5目标检测
  • YOLOv5:添加SE、CBAM、CoordAtt、ECA注意力机制
  • YOLOv5:yolov5s.yaml配置文件解读、增加小目标检测层
  • Python将COCO格式实例分割数据集转换为YOLO格式实例分割数据集
  • YOLOv5:使用7.0版本训练自己的实例分割模型(车辆、行人、路标、车道线等实例分割)
  • 使用Kaggle GPU资源免费体验Stable Diffusion开源项目

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

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

相关文章

怎么把图片转文字?这几个图片转文字方法一定要知道!

怎么把图片转文字?无论是从书籍、网络还是社交媒体上,我们经常需要从图片中提取文字来进行复制、编辑或翻译。手动操作耗时耗力,效率低下,那么怎么把图片转文字呢?今天我将介绍三种不同的方法来实现图片转文字。 图片转…

OceanMind海睿思案例入选第二届中国数据治理年会“DCMM百项优秀案例”

近日,中国电子信息行业联合会在北京成功举办“第二届中国数据治理年会”。 本届大会以“数据强基、智领未来”为主题,汇聚我国数据治理领域的资深专家、学者、企业大咖同台论道,共话数据未来的发展与创新。 中新赛克海睿思作为DCMM3级乙方代…

HPM6750系列--总章

本栏目介绍先楫半导体出品的HPM6750芯片(基于HPM6750evkmini开发板) ​​​​​​​ 内容概述 HPM6750系列--第一篇 初识HPM6750 介绍HPM6750芯片信息,包括主频、内存、外设配置,并列举了各种开发工具和开发资源。 HPM6750系列--…

Cloudflare始终使用HTTPS且带参数跳转到www的域名

文章目录 设置教程设置图跳转实测 设置教程 关闭 SSL/TLS -> 边缘证书 的 Always Use HTTPS 规则 -> 页面规则 -> URL: http://www.example.com/* 设置成始终使用HTTPS 规则 -> 页面规则 -> URL: example.com/* 设置成 转发URL301重定向到 to https://www.ex…

气象监测与流程分析大屏,更有效地保护人们的生命和财产安全!

气象变化与我们的生活息息相关,随着时代的变迁和科技的飞速发展,气象监测正逐渐迈入数字化的时代。传统的气象观测方式已经无法满足日益增长的需求,数字化的气象监测成为了必然的选择。通过数字化技术的应用,气象数据的采集、传输…

简约大气视频制作模板PR剪辑素材PR项目工程文件

Premiere Pro模板,简约大气视频剪辑素材PR项目工程文件(包含手机竖屏分辨率),包含24个媒体占位符和9个文本占位符。可以编辑和自定义文本占位符和媒体占位符。用来展示照片视频制作。包含视频教程。 来自PR模板网:http…

(c语言)计算一个数的每位之和(递归实现)

#include<stdio.h> int DigitSum(int x) {int sum 0, g0;if(x>0){g x % 10;sum g;return sumDigitSum(x/10);}return 0; } int main() {int x;printf("请输入需要计算的数\n");scanf("%d",&x);int yDigitSum(x);printf("%d",y);…

会议剪影 | 思腾携AI服务器亮相2023“机器人+”智能制造先进成果展

12月7日-9日&#xff0c;由山东省工业和信息化厅、济宁市人民政府、中国电子信息产业发展研究院主办的2023“机器人”智能制造暨数字经济发展先进成果展在济宁高新区展览馆举办。思腾合力作为行业领先的人工智能基础架构解决方案商出席本次盛会。 本届展会得到了来自政府、行业…

人工智能中的顺序学习:概念、应用和未来方向

一、介绍 人工智能 &#xff08;AI&#xff09; 中的顺序学习是一个关键研究领域&#xff0c;近年来引起了人们的极大兴趣。它指的是人工智能系统从数据序列中学习的能力&#xff0c;其中数据点的顺序至关重要。本文将探讨人工智能中顺序学习的概念、其重要性、应用、方法、挑战…

VSCode配置记录

1. 修改代码背景颜色 1&#xff09;Shift Command P&#xff0c;搜索框输入&#xff1a;settings.json 2&#xff09;输入配置 {"workbench.colorCustomizations": {"editor.lineHighlightBackground": "#86e9e93d", # 修改鼠标所在行背景色…

第P7周:咖啡豆识别(VGG-16复现)

>- **&#x1f368; 本文为[&#x1f517;365天深度学习训练营](https://mp.weixin.qq.com/s/rbOOmire8OocQ90QM78DRA) 中的学习记录博客** >- **&#x1f356; 原作者&#xff1a;[K同学啊 | 接辅导、项目定制](https://mtyjkh.blog.csdn.net/)** 一、前期工作 import …

探讨低代码——一种快速开发软件应用程序并且手动编码最少的方法

一、低代码、零代码、纯代码定义 低代码开发平台使企业在不编写大量代码的情况下快速创建复杂应用程序。与传统的纯代码开发相比&#xff0c;低代码开发能够大大减少开发周期&#xff0c;并降低技术门槛&#xff0c;使得开发过程更加高效。而零代码开发更进一步简化了开发过程&…

[多线程]一篇文章带你看懂Java中的synchronized关键字(线程安全)锁的深入理解

目录 1.前言 2.synchronized的特性 2.1synchronized前言 2.2乐观锁和悲观锁 2.3重量级锁和轻量级锁 重量级锁 &#xff1a; 轻量级锁&#xff1a; 2.4自旋锁和挂起等待锁 2.5 公平锁和非公平锁 公平锁&#xff1a; 非公平锁&#xff1a; 2.6可重入锁和不可重入锁 可…

2024年创建有效SaaS PRD的终极指南

您目前是否正在开发SaaS产品&#xff1f;您是否想要确保您的产品满足目标用户的要求并符合您的业务目标&#xff1f;如果是这样&#xff0c;创建全面的“SaaS产品需求文档&#xff08;PRD&#xff09;”至关重要。 在了解SaaS PRD的具体组成部分之前&#xff0c;必须认识到内容…

前端必备-http知识

在掘金查看该文章 计算机网络五层模型 1.物理层 (Physical Layer) 关键词 光纤,电缆,双绞线,连接 物理层要解决的主要问题&#xff1a; &#xff08;1&#xff09;物理层要尽可能地屏蔽掉物理设备和传输媒体&#xff0c;通信手段的不同&#xff0c;使数据链路层感觉不到这些…

IT 人员与加密程序:如何战胜病毒

&#x1f510; 加密程序是攻击者在成功攻击组织时使用最多的恶意软件类型。它们通常会发送到一个庞大的电子邮件地址数据库&#xff0c;看起来像 Word 或 Excel 文档或 PDF 文件。 想象一下&#xff0c;你是会计部门的一名员工。这种格式的文件在电子文档管理系统中被广泛使用…

Linux服务器开发太麻烦? 试试IntelliJ IDEA公网远程访问开发极大提升开发效率

文章目录 1. 检查Linux SSH服务2. 本地连接测试3. Linux 安装Cpolar4. 创建远程连接公网地址5. 公网远程连接测试6. 固定连接公网地址7. 固定地址连接测试 本文主要介绍如何在IDEA中设置远程连接服务器开发环境&#xff0c;并结合Cpolar内网穿透工具实现无公网远程连接&#xf…

PySpark大数据处理详细教程

欢迎各位数据爱好者&#xff01;今天&#xff0c;我很高兴与您分享我的最新博客&#xff0c;专注于探索 PySpark DataFrame 的强大功能。无论您是刚入门的数据分析师&#xff0c;还是寻求深入了解大数据技术的专业人士&#xff0c;这里都有丰富的知识和实用的技巧等着您。让我们…

IDEA快捷键注释代码设置不从行开头开始

我们平时在用IDEA开发项目时会发现&#xff0c;快捷键注释的//总是在代码的行开头上面&#xff0c;如下图所示&#xff1a; 这样就显得代码很不美观&#xff0c;那如何才能使注释//贴紧代码呢&#xff1f;需要在IDEA中进行如下配置&#xff1a; 点击Apply之后就可以了&#xff…

Win11 TensorRT环境部署

一、CUDA和CUDNN安装 cuda和cudnn网上有很多安装教程&#xff0c;这里列举了一些&#xff0c;就不详细说了&#xff0c;具体链接如下&#xff1a; csdn.net - CUDA安装教程&#xff08;超详细&#xff09; 原创 zhihu.com - 深度学习之CUDACUDNN详细安装教程 tencent.com - C…