dlib标签制作

dlib的标签的数据格式如下:

大多用于目标检测的标签的数据格式:(图片名  left_top_y  left_top_x  width  height),如果用于dlib进行模型训练,那么就需要进行数据格式转换,下面就是标签的转换程序:

# -*- coding: utf-8 -*-
"""
Created on Mon Sep 10 17:52:11 2018

@author: Administrator
"""
import numpy as np

def convert(file_txt,file_xml,root_path):
    xml = open(file_xml,'w')
    xml.write("<?xml version='1.0' encoding='ISO-8859-1'?>")
    xml.write("\n")
    xml.write("<?xml-stylesheet type='text/xsl' href='image_metadata_stylesheet.xsl'?>")
    xml.write("\n")
    xml.write("<dataset>")
    xml.write("\n")
    xml.write("<name>dlib face detect train<name>")
    xml.write("\n")
    xml.write("<comment></comment>")
    xml.write("\n")
    xml.write("<images>")
    xml.write("\n")
    
    f = open(file_txt,"r")
    temp = []
    temp.append('0')
    
    for line in f.readlines():
        filename = line.split(' ')[0]
        left_top_x = line.split(' ')[2]
        left_top_y = line.split(' ')[1]
        width = line.split(' ')[3]
        height = line.split(' ')[4].strip()
        
        #同一张图片有多个目标
        if temp[-1] == filename:
            xml.write("    <box top='{0}' left='{1}' width='{2}' height='{3}'>".format(left_top_x,left_top_y,width,height))
            xml.write("\n")
        else: #读入一张新的图片
            if len(temp) > 1:
                xml.write("  </image>")
                xml.write("\n")
            
            xml.write("  <image file='{0}{1}'>".format(root_path,filename))
            xml.write("\n")
            xml.write("    <box top='{0}' left='{1}' width='{2}' height='{3}'/>".format(left_top_x,left_top_y,width,height))
            xml.write("\n")
        temp.append(filename)
        
    f.close()
    xml.write("  </image>")
    xml.write("\n")
    xml.write("</images>")
    xml.write("\n")
    xml.write("</dataset>")
    xml.close()


if __name__ == '__main__':
    convert('train.txt','train.xml','kk/')

代码下载:https://download.csdn.net/download/yongjiankuang/10657881

有不当之处,望指教!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值