网络编程
位置:首页>> 网络编程>> Python编程>> Python 生成VOC格式的标签实例

Python 生成VOC格式的标签实例

作者:疯狂的小猪oO  发布时间:2021-09-09 04:39:07 

标签:Python,VOC,标签

常用目标检测模型基本都是读取的PASCAL VOC格式的标签,下面代码用于生成VOC格式的代码,根据需要修改即可:


from lxml import etree, objectify

def gen_txt(filename, h, w, c):
 E = objectify.ElementMaker(annotate=False)
 anno_tree = E.annotation(
   E.folder('VOC_OPEN_IMAGE'),
   E.filename(filename),
   E.source(
     E.database('The VOC2007 Database'),
     E.annotation('PASCAL VOC2007'),
     E.image('flickr'),
     E.flickrid("341012865")
   ),
   E.size(
     E.width(w),
     E.height(h),
     E.depth(c)
   ),
   E.segmented(0),
   E.object(
     E.name('1'),
     E.pose('left'),
     E.truncated('1'),
     E.difficult('0'),
     E.bndbox(
       E.xmin('0'),
       E.ymin('0'),
       E.xmax('0'),
       E.ymax('0')
     )
   ),
 )
 etree.ElementTree(anno_tree).write('ann/'+filename[:-4]+".xml", pretty_print=True)

补充知识: python对PASCAL VOC标注数据进行统计

用于统计训练数据中的类别,以及所有目标的个数:


# coding:utf-8
import xml.etree.cElementTree as ET
import os
from collections import Counter
import shutil

# Counter({'towCounter({'tower': 3074, 'windpower': 2014, 'thermalpower': 689, 'hydropower': 261, 'transformer': 225})
# total_num: 6263

def count(pathdir,despath):
category = []
path = pathdir + '/XML/'
for index,xml in enumerate(os.listdir(path)):
# print(str(index) + ' xml: '+ xml)
root = ET.parse(os.path.join(path, xml))
objects = root.findall('object')

# ==================select images which has a special object=============
for obj in objects:
 obj_label = obj.find('name').text
 if obj_label == 'transformer':
 print(xml)
 imgfile = pathdir + 'JPEG/' + xml.replace('xml', 'jpg')
 img_despath = despath + xml.replace('xml', 'jpg')
 # if not os.path.exists(img_despath):
 shutil.copyfile(imgfile, img_despath)

# ==================select images which has a special object=============

category += [ob.find('name').text for ob in objects]
print(Counter(category))
total_num = sum([value for key, value in Counter(category).items()])
print('total_num:',total_num)

if __name__ == '__main__':
# pathdirs = list(set(os.listdir('./')) ^ set(['tools','count.py']))
# print(pathdirs)
# for pathdir in pathdirs:
pathdir = '/summer/Desktop/power_traindata/'
despath = '/transformer/'
count(pathdir,despath)

来源:https://blog.csdn.net/u014657795/article/details/81154731

0
投稿

猜你喜欢

  • 由于多种原因,进行安全设置的人们常常不理解数据的真正价值,所以,他们也无法对数据进行合适的保护。将你的数据只限于需要的人访问,并保证访问的人
  • 纯粹的截取字符串其实比较简单,用一个Left就搞定,但一个是全英文标题,一个是全中文标题,或中文混合排在一起,长短不一就很明显了,要考虑到中
  • 本文介绍了数据库索引,及其优、缺点。针对MySQL索引的特点、应用进行了详细的描述。分析了如何避免MySQL无法使用,如何使用EXPLAIN
  • asp分页做为一个经典的asp问题,有着非常丰富的分页形式和分页方法,但是大多数的asp分页都是使用VBscript作为服务器端的脚本,本文
  • 本文实例讲述了Python + Requests + Unittest接口自动化测试。分享给大家供大家参考,具体如下:1. 介绍下pytho
  • 代码如下:td=date() '此次为设置当前日期,主要是为了调试方便,实际应用中可以使用当天日期.. str=
  • SQL语句先前写的时候,很容易把一些特殊的用法忘记,我特此整理了一下SQL语句操作,方便自己写SQL时方便一点,想贴上来,一起看看,同时希望
  • 一旦你已经为MySQL实例管理器设置了一个密码文件并且IM正在运行,你可以连接它。你可以使用mysql客户端工具通过标准MySQL API来
  • 本文实例为大家分享了Python密码强弱判断的具体代码,供大家参考,具体内容如下程序说明:通过获取用户输入,判断密码长度是否大于8,同时判断
  • 我们在编写asp程序时经常会使用到这个功能,一般我们这样判断如:if a="" then ,而这个函数考虑的就比较全面了
  •  你说的就是真正的计数器,它只在有新的用户进入网站时,计数器才会加1,忠实可靠。把下列代码放到的global.asa的sessio
  • 1、pyqtgraph库数据可视化效果还不错,特别是窗体程序中图像交互性较好;安装也很方便,用 pip 安装。2、在Python中新建一个
  • PDO::preparePDO::prepare — 准备要执行的SQL语句并返回一个 PDOStatement 对象(PHP 5 >
  • 函数原型与参数详解OpenCV提供了cv.Canny()方法,该方法将输入的原始图像转换为边缘图像。该方法的原型为:cv.Canny(ima
  • 三遍记忆,让你记住海量素材的准确位置和用途,提高其可用性.这仅仅是一个示意图.在以往的日子里,我做到了只要脑袋里冒出一个想法,立刻就能知道我
  • 在封装自己的FileSystemObject库的时候,测试的时候发现在文件夹或文件很多的时候,效率很低,显示一个文件夹需要2秒甚至更多,这让
  • 我们日常用CSS布局的时候,关于图片背景,大部分的人都是一个背景一张图片的,怎么说呢?这是很标准的方法,但是这种普通制作方式下要保存大量图片
  • 内码问题.用这段代码的吧,我已经改得很精简了.使用XMLHTTP抓取地址并进次内容处理Function GetBody(Url) Dim o
  • 本文实例讲述了JS实现运动缓冲效果的封装函数。分享给大家供大家参考,具体如下:之前经常写运动函数,要写好多好多,后来想办法封装起来。(运动缓
  • php输出全部gb2312编码内的汉字,$area表示分区,$pos表示分区内所在位置。<?php$fp = fopen('t
手机版 网络编程 asp之家 www.aspxhome.com