如何将label转换成二进制的bin文件

import sys
import os
import xml.etree.ElementTree as ET
from struct import *


root="/home/zhao/xml"
output="labels_obstacle.bin"

def write_labels():
    names = os.listdir(root)
    file = open(output, "wb")
    file.write(pack("i", len(names)))
    for name in names:
        dom = ET.parse(os.path.join(root, name))
        file.write(pack("400s", dom.find("filename").text))
        num = 0
        for obj in dom.iter("object"):
            num = num + 1
       
        file.write(pack("iii", int(dom.find("size").find("width").text), int(dom.find("size").find("height").text), num))
        for obj in dom.iter("object"):
            file.write(pack("ffff", float(obj.find("bndbox").find("xmin").text), float(obj.find("bndbox").find("ymin").text), \
                               float(obj.find("bndbox").find("xmax").text), float(obj.find("bndbox").find("ymax").text)))
            print int(dom.find("size").find("width").text), int(dom.find("size").find("height").text), num, \
                  float(obj.find("bndbox").find("xmin").text), float(obj.find("bndbox").find("ymin").text), \
                  float(obj.find("bndbox").find("xmax").text), float(obj.find("bndbox").find("ymax").text)
    file.close()

def read_labels():
    file = open(output, "r")
    nlabel = unpack("i", file.read(4))[0]
    for i in range(nlabel):
        name = unpack("400s", file.read(400))[0]
        prob = unpack("iii", file.read(12))
        width, height, nbox = prob[0], prob[1], prob[2]
        for j in range(nbox):
            box = unpack("ffff", file.read(16))
            xmin, ymin, xmax, ymax = box[0], box[1], box[2], box[3]
            print name, width, height, nbox,xmin, ymin, xmax, ymax
if __name__ == '__main__':
    write_labels()
    #read_labels()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值