from lxml import etree
import cv2
# 读取 xml 文件信息,并返回字典形式
def parse_xml_to_dict(xml):
if len(xml) == 0: # 遍历到底层,直接返回 tag对应的信息
return {xml.tag: xml.text}
result = {}
for child in xml:
child_result = parse_xml_to_dict(child) # 递归遍历标签信息
if child.tag != 'object':
result[child.tag] = child_result[child.tag]
else:
if child.tag not in result: # 因为object可能有多个,所以需要放入列表里
result[child.tag] = []
result[child.tag].append(child_result[child.tag])
return {xml.tag: result}
# xml 标注文件的可视化
def xmlShow(img, xml, save=True):
image = cv2.imread(img)
with open(xml, encoding='gb18030', errors='ignore') as fid: # 防止出现非法字符报错
xml_str = fid.read()
xml = etree.fromstring(xml_str)
data = parse_xml_to_dict(xml)["annotation"] # 读取 xml文件信息
ob = [] # 存放目标信息
for i in data['object']: # 提取检测框
name = str(i['name']) # 检测的目标类别
bbox = i['bndbox']
xmin = int(bbox['xmin'])
ymin = int(bbox['ymin'])
xmax = int(bbox['xmax'])
ymax = int(bbox['ymax'])
tmp = [name, xmin, ymin, xmax, ymax] # 单个检测框
ob.append(tmp)
# 绘制检测框
for name, x1, y1, x2, y2 in ob:
cv2.rectangle(image, (x1, y1), (x2, y2), color=(255, 0, 0), thickness=2) # 绘制矩形框
cv2.putText(image, name, (x1, y1 - 10), fontFace=cv2.FONT_HERSHEY_SIMPLEX,
fontScale=0.5, thickness=1, color=(0, 0, 255))
# 保存图像
if save:
cv2.imwrite('result.png', image)
# # 展示图像
# cv2.imshow('test', image)
# cv2.waitKey()
# cv2.destroyAllWindows()
if __name__ == "__main__":
import os
import random
img_path = './data/train/images/' # 传入图片
image = [os.path.join(img_path, i) for i in os.listdir(img_path)]
r = random.randint(0, len(image) - 1) # 生成随机索引
image_path = image[r]
labels_path = image_path.replace('images', 'labels') # 自动获取对应的 xml 标注文件
labels_path = labels_path.replace('.jpg', '.xml')
xmlShow(img=image_path, xml=labels_path, save=True)
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
项目包含:行人摔倒检测数据集(VOC标注格式的xml文件,已经做了训练集和测试集划分),数据保存按照文件夹保存,经测试,可直接用作目标检测数据集,无需额外处理。 图像分辨率为800*800的RGB图片,数据集为行人跌倒检测 【数据集介绍】行人跌倒图像数据,5类别:person、fall等等 【数据总大小】440MB 【数据集详情】data目录下分为两个目录,train为训练数据、test为测试数据,每个目录下各有两个子文件夹。images存放数据图片,labels目录存放标注文件。训练集共7609张图片和7609个xml解释文件。训练集共1902张图片和1902个xml解释文件 【json文件】5类别的json字典文件 为了方便查看数据,提供了可视化py文件,随机传入一张图片即可绘制边界框,并且保存在当前目录。脚本无需更改,可以直接运行!
资源推荐
资源详情
资源评论
收起资源包目录
目标检测数据集:行人跌倒检测(VOC标注格式的xml文件,已经做了训练集和测试集划分,对大部分公开数据集进行融合) (2000个子文件)
show.py 2KB
003467.xml 9KB
005981.xml 6KB
002015.xml 6KB
002956.xml 6KB
002577.xml 5KB
002566.xml 5KB
003008.xml 5KB
002484.xml 5KB
006319.xml 4KB
002440.xml 4KB
007484.xml 4KB
002825.xml 4KB
002449.xml 4KB
006463.xml 4KB
002433.xml 4KB
002485.xml 4KB
006004.xml 4KB
003689.xml 4KB
001772.xml 4KB
002424.xml 4KB
002400.xml 4KB
007428.xml 4KB
005980.xml 4KB
005696.xml 4KB
002760.xml 4KB
007124.xml 4KB
002475.xml 4KB
003239.xml 4KB
001998.xml 4KB
002452.xml 4KB
007250.xml 4KB
002940.xml 4KB
002840.xml 4KB
006358.xml 4KB
006653.xml 3KB
006217.xml 3KB
005940.xml 3KB
005479.xml 3KB
002461.xml 3KB
002740.xml 3KB
002511.xml 3KB
007609.xml 3KB
002950.xml 3KB
003656.xml 3KB
005831.xml 3KB
005488.xml 3KB
005496.xml 3KB
005559.xml 3KB
005929.xml 3KB
006526.xml 3KB
005293.xml 3KB
005948.xml 3KB
002476.xml 3KB
005532.xml 3KB
005748.xml 3KB
002650.xml 3KB
005957.xml 3KB
002773.xml 3KB
002367.xml 3KB
004596.xml 3KB
006074.xml 3KB
006585.xml 3KB
005571.xml 3KB
005605.xml 3KB
006065.xml 3KB
005467.xml 3KB
001740.xml 3KB
005197.xml 3KB
007386.xml 3KB
002966.xml 3KB
002353.xml 3KB
002103.xml 3KB
007246.xml 3KB
001802.xml 3KB
007052.xml 3KB
006128.xml 3KB
006269.xml 3KB
006258.xml 3KB
005481.xml 3KB
005983.xml 3KB
004119.xml 3KB
006438.xml 3KB
006364.xml 3KB
005041.xml 3KB
006665.xml 3KB
006162.xml 3KB
009067.xml 3KB
003061.xml 3KB
009269.xml 3KB
002441.xml 3KB
009273.xml 3KB
005586.xml 3KB
002730.xml 3KB
005749.xml 3KB
007674.xml 3KB
008130.xml 3KB
002009.xml 3KB
003713.xml 3KB
003491.xml 3KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
听风吹等浪起
- 粉丝: 1w+
- 资源: 1329
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功