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标注,包含训练集和验证集),数据保存按照文件夹保存,经测试,可直接用作目标检测数据集,无需额外处理。 图像分辨率为640*480的RGB图片,数据集为铝片表面缺陷检测 【数据集介绍】铝片表面缺陷图像数据,4类别:针孔、擦伤、脏污、褶皱 【数据总大小】83 MB 【数据集详情】data目录下分为两个目录,train为训练数据、test为测试数据,每个目录下各有两个子文件夹。images存放数据图片,labels目录存放标注文件。训练集共1120张图片和1120个xml解释文件。训练集共280张图片和280个xml解释文件 【json文件】4类别的json字典文件 为了方便查看数据,提供了可视化py文件,随机传入一张图片即可绘制边界框,并且保存在当前目录。脚本无需更改,可以直接运行!
资源推荐
资源详情
资源评论
收起资源包目录
目标检测数据集:铝片表面缺陷图像目标检测(VOC标注,包含训练集和验证集) (2000个子文件)
913.jpg 92KB
1310.jpg 88KB
1060.jpg 88KB
912.jpg 86KB
560.jpg 86KB
995.jpg 85KB
1058.jpg 85KB
1308.jpg 85KB
801.jpg 84KB
896.jpg 84KB
1396.jpg 84KB
898.jpg 83KB
1148.jpg 83KB
1398.jpg 83KB
1406.jpg 83KB
1156.jpg 83KB
888.jpg 82KB
993.jpg 82KB
904.jpg 82KB
1138.jpg 82KB
1388.jpg 82KB
551.jpg 82KB
1390.jpg 82KB
1140.jpg 82KB
646.jpg 82KB
874.jpg 82KB
1307.jpg 81KB
807.jpg 81KB
656.jpg 81KB
848.jpg 81KB
799.jpg 81KB
1089.jpg 81KB
1339.jpg 81KB
493.jpg 81KB
1299.jpg 81KB
1122.jpg 81KB
1100.jpg 81KB
654.jpg 81KB
1379.jpg 80KB
1114.jpg 80KB
915.jpg 80KB
1165.jpg 80KB
1091.jpg 80KB
857.jpg 80KB
881.jpg 80KB
1357.jpg 80KB
1107.jpg 80KB
1131.jpg 80KB
624.jpg 80KB
557.jpg 80KB
748.jpg 80KB
824.jpg 80KB
931.jpg 80KB
681.jpg 79KB
1074.jpg 79KB
549.jpg 79KB
1081.jpg 79KB
600.jpg 79KB
629.jpg 79KB
826.jpg 79KB
614.jpg 78KB
1076.jpg 78KB
1326.jpg 78KB
500.jpg 78KB
498.jpg 78KB
431.jpg 78KB
574.jpg 78KB
1083.jpg 78KB
833.jpg 78KB
555.jpg 77KB
1229.jpg 77KB
773.jpg 77KB
1304.jpg 77KB
804.jpg 77KB
1235.jpg 77KB
581.jpg 77KB
567.jpg 77KB
1211.jpg 77KB
961.jpg 77KB
711.jpg 77KB
576.jpg 77KB
565.jpg 77KB
803.jpg 77KB
637.jpg 77KB
987.jpg 76KB
1237.jpg 76KB
1056.jpg 76KB
969.jpg 76KB
713.jpg 76KB
523.jpg 76KB
479.jpg 76KB
554.jpg 76KB
1283.jpg 76KB
1294.jpg 75KB
794.jpg 75KB
721.jpg 75KB
561.jpg 75KB
1037.jpg 75KB
1028.jpg 74KB
487.jpg 74KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
听风吹等浪起
- 粉丝: 1w+
- 资源: 1289
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功