随机复制xml文件与相对应的jpg文件

训练数据集时需要随机挑一些数据图片出来当test集,这个可以帮助随机抽取一些数据(xml与对应的jpg)


import cv2 
import numpy as np 
import os
import  xml.dom.minidom
from PIL import Image
import random

def write_xml(info): 
    info1=info[0][0:6]+'.jpg'
    img_dir='JPEGImages/'
    im = Image.open(img_dir+info1)
    width,height = im.size
    xml_dir='11/'
    #write in xml file
    xml_file = open((xml_dir + info1[0:6]+'.xml'),'w')
    xml_file.write('<annotation>\n')
    xml_file.write('    <folder>VOC2007</folder>\n')
    xml_file.write('    <filename>' +info1  + '</filename>\n')
    xml_file.write('    <size>\n')
    xml_file.write('        <width>' + str(width) + '</width>\n')
    xml_file.write('        <height>' + str(height) + '</height>\n')
    xml_file.write('        <depth>3</depth>\n')
    xml_file.write('    </size>\n')
    
    #write the region of image on xml file
    for img_each_label in info[1:]:
        # print("aaaaaaa",img_each_label)
        # print("bbbbbbb",img_each_label)
        spt="limitRate"
        xml_file.write('    <object>\n')
        xml_file.write('        <name>' + spt + '</name>\n')
        xml_file.write('        <pose>Unspecified</pose>\n')
        xml_file.write('        <truncated>0</truncated>\n')
        xml_file.write('        <difficult>0</difficult>\n')
        xml_file.write('        <bndbox>\n')
        xml_file.write('            <xmin>' + str(img_each_label[0]) + '</xmin>\n')
        xml_file.write('            <ymin>' + str(img_each_label[1]) + '</ymin>\n')
        xml_file.write('            <xmax>' + str(img_each_label[2]) + '</xmax>\n')
        xml_file.write('            <ymax>' + str(img_each_label[3]) + '</ymax>\n')
        xml_file.write('        </bndbox>\n')
        xml_file.write('    </object>\n')
   
    xml_file.write('</annotation>')

def xml_read(filename):
    # print(filename)
    if os.path.exists(filename) is False:
        return None
    dom = xml.dom.minidom.parse(filename)
    #得到文档元素对象
    root = dom.documentElement
    
    object_ = root.getElementsByTagName('object')
    info=[]
    # filename = root.getElementsByTagName('filename')[0].firstChild.data
    for object_1 in object_:
        name=object_1.getElementsByTagName("name")[0].firstChild.data
        bndbox=object_1.getElementsByTagName("bndbox")[0]
        xmin=int(bndbox.getElementsByTagName("xmin")[0].firstChild.data)
        ymin=int(bndbox.getElementsByTagName("ymin")[0].firstChild.data)
        xmax=int(bndbox.getElementsByTagName("xmax")[0].firstChild.data)
        ymax=int(bndbox.getElementsByTagName("ymax")[0].firstChild.data)
        # if name=='40\'':
        #   print(filename,xmin,ymin,xmax,ymax)
        # if 'limitRate'==name or 'limit'==name:
        info.append([xmin,ymin,xmax,ymax,name])
    return info


file_dir='./'
name=[]
for files in os.scandir('.'):
    if files.name[-1]=='l':
        name.append(files.name)
num=0
import os,shutil
random.shuffle(name)
for ii in range(len(name)//2):
    file=name[ii-num]
    file_src=file
    file_dst='11/'+file_src
    shutil.copyfile(file_src,file_dst)
    file_src=file[:-4]+'.jpg'
    file_dst='11/'+file_src
    shutil.copyfile(file_src,file_dst)

更多
更多内容请关注公众号,了解嵌入式ai前沿资讯!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值