For generating Pascal VOC XML image annotation files
Project description
Polygon Pascal VOC Writer
A simple python module to generate Pascal VOC XML image annotation files.
Currently only supports bounding-boxes and polygons.
Improved upon AndrewCarterUK's Pascal VOC Writer.
Installation
$ pip install polygon-pascalvoc-writer
Importing:
from polygon_pascalvoc_writer import VocWriter
Table of Contents
Example Execution
For a single image
back to Contents
Write annotation for myImage.png (width: 100, height: 150) :
from polygon_pascalvoc_writer import VocWriter
images_dir = "dir/images/"
annotations_dir = "dir/annotations/"
image_name = "myImage.png"
writer = VocWriter(images_dir, annotations_dir, image_name)
# Rectangular bounding box
box_name = "myLabelBox"
xmin, ymin, xmax, ymax = 1, 2, 3, 4
writer.addBndBox(box_name, xmin, ymin, xmax, ymax)
# 1st polygon
polygon_1_name = "myPolygon"
vertices_1 = [
[1, 2],
[3, 4],
[5, 6]
]
writer.addPolygon(polygon_1_name, vertices_1)
# 2nd polygon
polygon_2_name = "myPolygon"
vertices_2 = [
[10, 20],
[30, 40],
[50, 60]
]
writer.addPolygon(polygon_2_name, vertices_2)
# Write to XML file in VOC format
writer.save()
Output file, dir/annotation/myImage.xml :
<annotation>
<folder>images</folder>
<filename>myImage.png</filename>
<path>absolutePathTo/dir/images/myImage.png</path>
<source>
<database>Unknown</database>
</source>
<size>
<width>100</width>
<height>150</height>
<depth>3</depth>
</size>
<segmented>0</segmented>
<object>
<name>myLabelBox</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>1</xmin>
<ymin>2</ymin>
<xmax>3</xmax>
<ymax>4</ymax>
</bndbox>
</object>
<object>
<name>myPolygon</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<polygon>
<x1>1</x1>
<y1>2</y1>
<x2>3</x2>
<y2>4</y2>
<x3>5</x3>
<y3>6</y3>
</polygon>
<bndbox>
<xmin>1</xmin>
<ymin>2</ymin>
<xmax>5</xmax>
<ymax>6</ymax>
</bndbox>
</object>
<object>
<name>myPolygon</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<polygon>
<x1>10</x1>
<y1>20</y1>
<x2>30</x2>
<y2>40</y2>
<x3>50</x3>
<y3>60</y3>
</polygon>
<bndbox>
<xmin>10</xmin>
<ymin>20</ymin>
<xmax>50</xmax>
<ymax>60</ymax>
</bndbox>
</object>
</annotation>
For a folder of images
back to Contents
Write annotation for image1.png and image2.png :
from polygon_pascalvoc_writer import VocWriter
images_dir = "dir/images/"
annotations_dir = "dir/annotations/"
writer = VocWriter(images_dir, annotations_dir, "")
list_of_annotations = [
{
"image_name": "image1.png",
"polygons": [
[
[1, 2],
[3, 4],
[5, 6]
],
[
[10, 20],
[30, 40],
[50, 60]
]
]
},
{
"image_name": "image2.png",
"polygons": [
[
[7, 8],
[9, 10],
[11, 12]
],
[
[70, 80],
[90, 100],
[110, 120]
]
]
}
]
for annotation in list_of_annotations:
# Clears the label data, then sets the image with
# name matching annotation["image_name"] as the current working image.
# Doesn't save the label data. Saving is done by writer.save()
writer.nextImage(annotation["image_name"])
for polygon_vertices in annotation["polygons"]:
writer.addPolygon("polygon_name", polygon_vertices)
# Write to XML file in VOC format
writer.save()
Resulting directories:
dir
├── images
| ├── image1.png
| └── image2.png
└── annotations
├── image1.xml
├── image2.xml
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file polygon-pascalvoc-writer-1.0.5.tar.gz.
File metadata
- Download URL: polygon-pascalvoc-writer-1.0.5.tar.gz
- Upload date:
- Size: 4.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.11.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.7.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
25fa23bd5ae09304a26dc3953a6a9069dc0df9c0b49cab52ba1f5c7e19f9aacb
|
|
| MD5 |
0cbde29088624bc6b8eac1a679925d5a
|
|
| BLAKE2b-256 |
837bda7c21ca60d946ae58142a687adc9ec8f793409ff5616c57151a2a192b63
|
File details
Details for the file polygon_pascalvoc_writer-1.0.5-py2.py3-none-any.whl.
File metadata
- Download URL: polygon_pascalvoc_writer-1.0.5-py2.py3-none-any.whl
- Upload date:
- Size: 5.5 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.11.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.7.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4d8cff1966f12d5b9b299af6cc108933f02972ba787bd045d35591d424eef0e9
|
|
| MD5 |
2ffabf55b469a0ebf74a58625d99c7a5
|
|
| BLAKE2b-256 |
3cae48e750d859d6d259cfc2b925f4a7f28ac832ed4922f0f685261cff5c8978
|