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 字典(Dictionary)操作详解
Mar 11 Python
python Selenium爬取内容并存储至MySQL数据库的实现代码
Mar 16 Python
Python实现Pig Latin小游戏实例代码
Feb 02 Python
无法使用pip命令安装python第三方库的原因及解决方法
Jun 12 Python
对numpy中的数组条件筛选功能详解
Jul 02 Python
Python常用爬虫代码总结方便查询
Feb 25 Python
python读写配置文件操作示例
Jul 03 Python
Django 对象关系映射(ORM)源码详解
Aug 06 Python
python实现简单井字棋小游戏
Mar 05 Python
django修改models重建数据库的操作
Mar 31 Python
python requests.get带header
May 05 Python
Python判断变量是否是None写法代码实例
Oct 09 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实现文本数据导入SQL SERVER
2015/05/17 PHP
thinkPHP5.0框架URL访问方法详解
2017/03/18 PHP
PHP safe_mode开启对于PHP系统函数有什么影响
2020/11/10 PHP
js中scrollHeight,scrollWidth,scrollLeft,scrolltop等差别介绍
2012/05/16 Javascript
js给dropdownlist添加选项的小例子
2013/03/04 Javascript
jQuery截取指定长度字符串代码
2014/08/21 Javascript
Javascript实现可旋转的圆圈实例代码
2015/08/04 Javascript
jQuery Easyui学习之datagrid 动态添加、移除editor
2016/01/27 Javascript
JS在Chrome浏览器中showModalDialog函数返回值为undefined的解决方法
2016/08/03 Javascript
js判断请求的url是否可访问,支持跨域判断的实现方法
2016/09/17 Javascript
jQuery实现二维码扫描功能
2017/01/09 Javascript
react系列从零开始_简单谈谈react
2017/07/06 Javascript
Angular中innerHTML标签的样式不起作用的原因解析
2019/06/18 Javascript
webpack3.0升级4.0的方法步骤
2020/04/02 Javascript
jQuery实现的移动端图片缩放功能组件示例
2020/05/01 jQuery
让 python 命令行也可以自动补全
2014/11/30 Python
python实现TCP服务器端与客户端的方法详解
2015/04/30 Python
Python程序中设置HTTP代理
2016/11/06 Python
Python基于scipy实现信号滤波功能
2019/05/08 Python
python flask web服务实现更换默认端口和IP的方法
2019/07/26 Python
matplotlib quiver箭图绘制案例
2020/04/17 Python
关于tensorflow softmax函数用法解析
2020/06/30 Python
浅谈pandas dataframe对除数是零的处理
2020/07/20 Python
Python爬虫中Selenium实现文件上传
2020/12/04 Python
使用HTML5 Canvas API控制字体的显示与渲染的方法
2016/03/24 HTML / CSS
Bitiba意大利:在线宠物商店
2020/10/31 全球购物
加拿大著名的奢侈品购物网站:SSENSE(支持中文)
2020/06/25 全球购物
工程监理应届生求职信
2013/11/09 职场文书
酒吧创业计划书
2014/01/18 职场文书
2014大学生学生会工作总结
2014/12/19 职场文书
小学优秀学生评语
2014/12/29 职场文书
2015年大学班长个人工作总结
2015/04/24 职场文书
2016年暑期见闻作文
2015/11/25 职场文书
如何用Node.js编写内存效率高的应用程序
2021/04/30 Javascript
MySQL的存储函数与存储过程的区别解析
2022/04/08 MySQL
浅谈音视频 pts dts基本概念及理解
2022/08/05 数码科技