voc2012中xml文档代码简单说明

原图

标识后图片:


代码演示及说明:

<annotation>
	<folder>VOC2012</folder>                               //文件名
	<filename>2007_000346.jpg</filename>
	<source>                                                //文件来源
		<database>The VOC2007 Database</database>
		<annotation>PASCAL VOC2007</annotation>
		<image>flickr</image>
	</source>
	<size>                                           //文件大小(宽度、高度、通道数)
		<width>500</width>
		<height>375</height>
		<depth>3</depth>
	</size>
	<segmented>1</segmented>                       //是否用于分割
	<object>                                      //检测物体说明
		<name>bottle</name>                         //所检测到的物体
		<pose>Unspecified</pose>                    //拍摄角度(未详细说明)
		<truncated>0</truncated>                     //是否被截断(0代表未被截断)
		<difficult>0</difficult>                     //目标是否难以识别(0代表容易识别)
		<bndbox>                                     //左下和右上坐标
			<xmin>124</xmin>
			<ymin>107</ymin>
			<xmax>230</xmax>
			<ymax>343</ymax>
		</bndbox>
	</object>
	<object>                       //所检测的另一物体
		<name>person</name>
		<pose>Unspecified</pose>
		<truncated>0</truncated>
		<difficult>0</difficult>
		<bndbox>
			<xmin>137</xmin>
			<ymin>78</ymin>
			<xmax>497</xmax>
			<ymax>375</ymax>
		</bndbox>
	</object>
	<object>
		<name>person</name>
		<pose>Unspecified</pose>
		<truncated>1</truncated>
		<difficult>0</difficult>
		<bndbox>
			<xmin>89</xmin>
			<ymin>202</ymin>
			<xmax>129</xmax>
			<ymax>247</ymax>
		</bndbox>
	</object>
	<object>
		<name>person</name>
		<pose>Frontal</pose>
		<truncated>1</truncated>
		<difficult>0</difficult>
		<bndbox>
			<xmin>72</xmin>
			<ymin>209</ymin>
			<xmax>111</xmax>
			<ymax>259</ymax>
		</bndbox>
	</object>
</annotation>

Darknet框架的训练数据通常是以`.txt`格式存储类别标签和图像路径信息,而VOC (Visual Object Classes) 数据集的标准格式是`.xml`,用于存储每个对象的详细标注信息。将`.txt`转换为`.xml`,你需要编写一些脚本来解析和生成XML。 这是一个简化的Python示例,假设`.txt`文件格式如下: ```txt image.jpg class1 image2.jpg class2 ``` 你可以使用下面的代码片段作为基础: ```python import os def txt_to_voc(txt_file, output_dir, img_folder): with open(txt_file, 'r') as f: lines = f.readlines() for line in lines: image_path, label = line.strip().split(' ') img_name = os.path.basename(image_path) xml_path = os.path.join(output_dir, f'{img_name}.xml') with open(xml_path, 'w') as xml_f: xml_f.write('<?xml version="1.0" encoding="UTF-8"?>\n') xml_f.write('<annotation>\n') xml_f.write(f'\t<folder>{img_folder}</folder>\n') xml_f.write(f'\t<filename>{img_name}</filename>\n') xml_f.write('\t<size>\n') xml_f.write('\t\t<width>640</width>\n') # 假设宽度固定,替换为实际值 xml_f.write('\t\t<height>480</height>\n') # 假设高度固定,替换为实际值 xml_f.write('\t\t<depth>3</depth>\n') # RGB颜色深度 xml_f.write('\t</size>\n') xml_f.write(f'\t<object>\n') xml_f.write('\t\t<name>{label}</name>\n') xml_f.write('\t\t<bndbox>\n') xml_f.write('\t\t\t<xmin>0</xmin>\n') # 位置信息需要根据实际检测结果填充 xml_f.write('\t\t\t<ymin>0</ymin>\n') xml_f.write('\t\t\t<xmax>640</xmax>\n') xml_f.write('\t\t\t<ymax>480</ymax>\n') xml_f.write('\t\t</bndbox>\n') xml_f.write('\t</object>\n') xml_f.write('</annotation>\n') # 使用方法 txt_to_voc('labels.txt', 'output_xml', 'images_folder') # 替换实际的文件名和路径 ``` 注意,这个例子非常简化,实际的XML需要更复杂的结构,包括可能的边界框坐标、比例等信息。你需要根据实际情况调整代码,并确保处理好图片的实际尺寸和对象的位置信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值