视觉目标检测标注xml格式文件解析可视化 - python 实现

视觉目标检测任务,通常用 labelimage标注,对应的标注文件为xml。

该示例来源于开源项目:https://gitcode.com/DataBall/DataBall-detections-100s/overview

读取 xml 标注文件,并进行可视化示例如下:

#-*-coding:utf-8-*-
# date:2024-09
# Author: DataBall - Xian
# function: show yolo data of voc format annoimport cv2
import os
import numpy as np
import xml.etree.cElementTree as et
import supervision as svif __name__ == "__main__":path_data='D:/dataset/img_list/bike/'idx = 0box_annotator = sv.BoxAnnotator()for file in os.listdir(path_data):if ".jpg" in file or ".png" in file:print(" ->[{}] {}".format(idx,file))path_img = path_data + filepath_label = path_img.replace(".jpg",".xml").replace(".png",".xml")if not os.access(path_label,os.F_OK): # 判断标注文件是否存在continueimg = cv2.imread(path_img) # 读取图片tree=et.parse(path_label)root=tree.getroot()for Object in root.findall('object'):name=Object.find('name').text # 获取类别名字# 获取坐标 xyxybndbox=Object.find('bndbox')x1= np.float32((bndbox.find('xmin').text))y1= np.float32((bndbox.find('ymin').text))x2= np.float32((bndbox.find('xmax').text))y2= np.float32((bndbox.find('ymax').text))# opencv 方式可视化# cv2.rectangle(img, (int(x1),int(y1)), (int(x2),int(y2)), (255,100,100), 2)# cv2.putText(img, "{}".format(name), (int(x1),int(y1)),\# cv2.FONT_HERSHEY_PLAIN, 2.5, (0, 55, 255), 6)# cv2.putText(img, "{}".format(name), (int(x1),int(y1)),\# cv2.FONT_HERSHEY_PLAIN, 2.5, (0, 255, 0), 2)# sv.BoxAnnotator() 方式可视化box_ = np.array([int(x1),int(y1), int(x2),int(y2)]).reshape(-1,4)det_ = sv.Detections(xyxy=box_)img = box_annotator.annotate(scene=img, detections=det_, labels=[name])cv2.namedWindow('image',0)cv2.imshow('image',img)if cv2.waitKey(30) == 27:breakcv2.destroyAllWindows()

助力快速掌握数据集的信息和使用方式。

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

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

相关文章

E卷-空栈压数

题目描述 向一个空栈压入正整数,每当压入一个整数时,执行以下规则(设:栈顶至栈底整数依次为 n 1 , n 2 , . . . n x n1,n2,... nx n1,n2,...nx,其中 n 1 n1 n1 为最新压入的整数)。 如果 n 1 n 2 n1 n2 n1n2,则 n 1 , n 2…

地理征服营销与开源 AI 智能名片 2 + 1 链动模式 S2B2C 商城小程序的融合创新

摘要:本文探讨了地理征服营销这一创新营销策略与开源 AI 智能名片 2 1 链动模式 S2B2C 商城小程序的融合应用。首先阐述地理征服营销的概念和实施要点,接着介绍开源 AI 智能名片 2 1 链动模式 S2B2C 商城小程序的功能与优势,分析二者结合如…

三周精通FastAPI:24 OAuth2 实现简单的 Password 和 Bearer 验证

官网文档:https://fastapi.tiangolo.com/zh/tutorial/security/simple-oauth2/ OAuth2 实现简单的 Password 和 Bearer 验证 本章添加上一章示例中欠缺的部分,实现完整的安全流。 获取 username 和 password 首先,使用 FastAPI 安全工具获…

字节青训-兔群繁殖之谜

问题描述 生物学家小 R 正在研究一种特殊的兔子品种的繁殖模式。这种兔子的繁殖遵循以下规律: 每对成年兔子每个月会生育一对新的小兔子(一雌一雄)。新生的小兔子需要一个月成长,到第二个月才能开始繁殖。兔子永远不会死亡。 小 R…

appium自动化对已打开的app操作

一、说明 由于 Appium 4.x 版本对会话的管理方式发生了变化,直接重用会话的功能可能不再支持。你可能需要调整测试策略,采用新的方法与已经打开的应用进行交互,比如使用 ADB,就为了找这个我找了很久网上都没有说明,老…

基于STM32的智能厨房油烟监测与排风系统设计

引言 在日常烹饪过程中,厨房中容易产生大量油烟,长时间积累会对空气质量和墙面产生不良影响,甚至危害人体健康。智能厨房油烟监测与排风系统可以实时监测厨房内的油烟浓度,自动调节排风扇运行,确保空气清新。本文设计…

MiniWord

1.nuget 下载配置 2.引用 3. var value = new Dictionary<string, object>() { ["nianfen"] = nianfen, ["yuefen"] = yuefen, ["yuefenjian1"] = (int.Par…

计算机毕业设计Python+大模型恶意木马流量检测与分类 恶意流量监测 随机森林模型 深度学习 机器学习 数据可视化 大数据毕业设计 信息安全 网络安全

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; Python大模型恶意木马流量检…

04.DDD与CQRS

学习视频来源&#xff1a;DDD独家秘籍视频合集 https://space.bilibili.com/24690212/channel/collectiondetail?sid1940048&ctype0 文章目录 定义职责分离DDD与CQRS的关系领域模型和查询模型特点命令场景的领域模型查询场景的查询模型 架构方案领域事件方案1&#xff1a…

专业140+总分410+武汉大学807信号与系统考研经验武大原936电子信息与通信工程,真题,大纲,参考书。

考研专业课807信号与系统(原936)140&#xff0c;总分410&#xff0c;顺利被武汉大学录取&#xff0c;群 里不少同学希望总结一下复习经验&#xff0c;回看这一年有得有失&#xff0c;总结一下希望给大家有些参考。考研还需从自身情况出发&#xff0c;制定适合自己的复习计划&am…

Java 定时任务详解

在 Java 应用开发中&#xff0c;定时任务是一项非常常见且重要的功能。它允许我们在特定的时间间隔或特定的时间点执行预先定义好的任务&#xff0c;比如定时备份数据、定时清理缓存、定时发送邮件等。本文将参考javaguide对 Java 定时任务进行详细的讲解。 一、Java 中实现定…

什么是多态?面向对象中对多态的理解

本文原文来自&#xff1a;什么是多态&#xff1f;面向对象中对多态的理解 什么是多态 多态&#xff08;Polymorphism&#xff09;是面向对象编程&#xff08;OOP&#xff09;中的一个核心概念&#xff0c;它允许对象以多种形式出现。多态性使得同一个接口可以用于不同的数据类…

Redisson(二)SpringBoot集成Redisson

目录 一、Redis单例模式 二、Redis哨兵模式 三、Redis集群模式 四、主从模式 五、兼容多种模式的配置&#xff08;重点&#xff09; 1、pom 2、配置文件 &#xff08;1&#xff09;application.properties &#xff08;2&#xff09;application-dev.properties &…

eclipse下载与安装(汉化教程)超详细

目录 一、下载eclipse安装包 三、配置eclipse 代码自动补全功能 安装汉化包 中英文切换 四、用eclipse写hello world 一、下载eclipse安装包 1、首先进入 eclipse官网 如下&#xff1a; 2、这里面有很多版本&#xff1b;我们小白一般选择第二个&#xff0c;向下滑动&…

【Kettle的安装与使用】使用Kettle实现mysql和hive的数据传输(使用Kettle将mysql数据导入hive、将hive数据导入mysql)

文章目录 一、安装1、解压2、修改字符集3、启动 二、实战1、将hive数据导入mysql2、将mysql数据导入到hive 一、安装 Kettle的安装包在文章结尾 1、解压 在windows中解压到一个非中文路径下 2、修改字符集 修改 spoon.bat 文件 "-Dfile.encodingUTF-8"3、启动…

Nop平台核心代码阅读导引

Nop平台核心引擎的实现代码都很简短&#xff0c;一般模块的核心代码量都是5000行左右的量级&#xff0c;只有ORM比较复杂一些&#xff0c;1万多行。 虽然代码很短&#xff0c;实际实现的功能特性却很多&#xff0c;要把所有细节设计都介绍到&#xff0c;文档量还是不小。建议有…

RHCE笔记-DNS服务器

一.DNS简介 DNS&#xff08;域名系统&#xff09;是一种互联网服务&#xff0c;负责将我们熟悉的域名&#xff08;比如 www.example.com&#xff09;转换为计算机能理解的IP地址&#xff08;比如 192.0.2.1&#xff09;。这样&#xff0c;当你在浏览器中输入网址时&#xff0c;…

利用QGIS工具手动绘制线轨迹并生成地理信息geojson文件

前端想要获得一个完整的shp文件或者geojson的地理信息文件&#xff0c;可以利用QGIS工具手动绘制你想要的数据点位&#xff0c;然后导出图层生成对应的文件即可。 1、新建临时图层 选择线图层&#xff0c;点击ok创建临时图层。 2、绘制线图层 在工具栏中选择添加线要素&#…

关于IO多路复用

先说总结 IO 多路复用的概念可以从网络 IO 的阻塞模型谈起。早期网络编程通常依赖阻塞的 read 函数读取数据&#xff0c;这会导致线程被阻塞&#xff0c;无法处理其他任务。为避免线程阻塞&#xff0c;常使用多线程来处理新的客户端连接。然而&#xff0c;随着客户端连接数的增…

面试记录(1)

java中的抽象类和接口的区别&#xff1a; 相同点 (1) 都可以被继承 (2) 都不能被实例化 (3) 都可以包含方法声明 (4) 派生类必须实现未实现的方法 不同点 1.关键字不同&#xff1a; ​ ① 继承抽象类的关键字是extends&#xff0c;而实现接口的关键字是implements&#xff1b;…