做数据权威的网站,东营做网站m0536,广西云尚网络科技有限公司,服务器搭建网站软件Python将Labelme文件的标注信息绘制到图片上 前言前提条件相关介绍实验环境Python将Labelme文件的标注信息绘制到图片上代码实现输出结果 前言 由于本人水平有限#xff0c;难免出现错漏#xff0c;敬请批评改正。更多精彩内容#xff0c;可点击进入Python日常小操作专栏、O… Python将Labelme文件的标注信息绘制到图片上 前言前提条件相关介绍实验环境Python将Labelme文件的标注信息绘制到图片上代码实现输出结果 前言 由于本人水平有限难免出现错漏敬请批评改正。更多精彩内容可点击进入Python日常小操作专栏、OpenCV-Python小应用专栏、YOLO系列专栏、自然语言处理专栏或我的个人主页查看YOLOv8 Ultralytics使用Ultralytics框架训练RT-DETR实时目标检测模型基于DETR的人脸伪装检测YOLOv7训练自己的数据集口罩检测YOLOv8训练自己的数据集足球检测YOLOv5TensorRT加速YOLOv5模型推理YOLOv5IoU、GIoU、DIoU、CIoU、EIoU玩转Jetson Nano五TensorRT加速YOLOv5目标检测YOLOv5添加SE、CBAM、CoordAtt、ECA注意力机制YOLOv5yolov5s.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 加速的张量计算如 NumPy2、构建深度神经网络时的自动微分机制。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].jsonout_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训练自己的数据集足球检测YOLOv5TensorRT加速YOLOv5模型推理YOLOv5IoU、GIoU、DIoU、CIoU、EIoU玩转Jetson Nano五TensorRT加速YOLOv5目标检测YOLOv5添加SE、CBAM、CoordAtt、ECA注意力机制YOLOv5yolov5s.yaml配置文件解读、增加小目标检测层Python将COCO格式实例分割数据集转换为YOLO格式实例分割数据集YOLOv5使用7.0版本训练自己的实例分割模型车辆、行人、路标、车道线等实例分割使用Kaggle GPU资源免费体验Stable Diffusion开源项目