Python 生成VOC格式的标签实例


Posted in Python onMarch 10, 2020

常用目标检测模型基本都是读取的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)

以上这篇Python 生成VOC格式的标签实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python调用shell的方法
Nov 20 Python
python抓取网页图片示例(python爬虫)
Apr 27 Python
Python实现加载及解析properties配置文件的方法
Mar 29 Python
Python基于递归和非递归算法求两个数最大公约数、最小公倍数示例
May 21 Python
Python实现的企业粉丝抽奖功能示例
Jul 26 Python
基于virtualenv创建python虚拟环境过程图解
Mar 30 Python
Python如何对XML 解析
Jun 28 Python
基于python requests selenium爬取excel vba过程解析
Aug 12 Python
浅析python中的del用法
Sep 02 Python
python 三边测量定位的实现代码
Apr 22 Python
python爬取某网站原图作为壁纸
Jun 02 Python
Django REST framework 限流功能的使用
Jun 24 Python
python3用urllib抓取贴吧邮箱和QQ实例
Mar 10 #Python
python目标检测给图画框,bbox画到图上并保存案例
Mar 10 #Python
python opencv 检测移动物体并截图保存实例
Mar 10 #Python
Python标准库json模块和pickle模块使用详解
Mar 10 #Python
Python xlrd excel文件操作代码实例
Mar 10 #Python
python图片剪裁代码(图片按四个点坐标剪裁)
Mar 10 #Python
python 截取XML中bndbox的坐标中的图像,另存为jpg的实例
Mar 10 #Python
You might like
php出现web系统多域名登录失败的解决方法
2014/09/30 PHP
基于PHPexecl类生成复杂的报表表头示例
2016/10/14 PHP
PHP中include和require的区别实例分析
2017/05/07 PHP
解决Yii2邮件发送结果返回成功,但接收不到邮件的问题
2017/05/23 PHP
jQuery学习笔记(1)--用jQuery实现异步通信(用json传值)具体思路
2013/04/08 Javascript
jquery 缓存问题的几个解决方法
2013/11/11 Javascript
JS 获取鼠标左右键的键值方法
2014/10/11 Javascript
Javascript动态创建div的方法
2015/02/09 Javascript
js仿土豆网带缩略图的焦点图片切换效果实现方法
2015/02/23 Javascript
JS烟花背景效果实现方法
2015/03/03 Javascript
JavaScript数组前面插入元素的方法
2015/04/06 Javascript
javascript比较两个日期相差天数的方法
2015/07/24 Javascript
动态生成的DOM不会触发onclick事件的原因及解决方法
2016/08/06 Javascript
bootstrap table分页模板和获取表中的ID方法
2017/01/10 Javascript
js上传图片预览的实现方法
2017/05/09 Javascript
jQuery扇形定时器插件pietimer使用方法详解
2017/07/18 jQuery
微信小程序实现鼠标拖动效果示例
2017/12/01 Javascript
基于Vue2.X的路由和钩子函数详解
2018/02/09 Javascript
Vue render深入开发讲解
2018/04/13 Javascript
JS实现图片切换效果
2018/11/17 Javascript
[01:31]完美与DOTA2历程
2014/07/31 DOTA
python 将列表中的字符串连接成一个长路径的方法
2018/10/23 Python
python3.6根据m3u8下载mp4视频
2019/06/17 Python
Django用户认证系统 Web请求中的认证解析
2019/08/02 Python
selenium+Chrome滑动验证码破解二(某某网站)
2019/12/17 Python
python matplotlib:plt.scatter() 大小和颜色参数详解
2020/04/14 Python
tensorflow之读取jpg图像长和宽实例
2020/06/18 Python
CSS3 :default伪类选择器使用简介
2018/03/15 HTML / CSS
戴森英国官网:Dyson英国
2019/05/07 全球购物
入党自我评价优缺点
2014/01/25 职场文书
初二生物教学反思
2014/02/03 职场文书
房地产财务部员工岗位职责
2014/03/12 职场文书
委托协议书范本
2014/04/22 职场文书
副科级后备干部考察材料
2014/05/15 职场文书
后备干部推荐材料
2014/12/24 职场文书
netty 实现tomcat的示例代码
2022/06/05 Servers