Skip to main content

Tool to work with annotation formats

Project description

pascal

Python utility to work with PascalVoc annotation format

Image examples from PascalVoc2007 dataset

Code Example
import json
from pathlib import Path

from PIL import Image

from pascal import annotation_from_xml
from pascal.utils import save_xml

ds_path = Path("/home/VOCtest_06-Nov-2007/VOCdevkit/VOC2007")

img_src = ds_path / "JPEGImages"
ann_src = ds_path / "Annotations"

out_labelme = ds_path / "converted_labelme"

attr_type_spec = {"truncated": bool, "difficult": bool}

label_map = {"car": 1, "dog": 0, "person": 2, "train": 3}

if __name__ == "__main__":
    for file in img_src.glob("*.jpg"):
        # Get annotation file path
        ann_file = (ann_src / file.name).with_suffix(".xml")
        # Make pascal annotation object
        ann = annotation_from_xml(ann_file, attr_type_spec)
        print(ann)
        # Save to xml file (same as ann_file)
        xml = ann.to_xml()
        out_xml_name = file.with_suffix(".xml").name
        save_xml(out_xml_name, xml)
        # Save yolo annotation
        yolo_ann = ann.to_yolo(label_map)
        out_yolo_name = file.with_suffix(".txt").name
        with open(out_yolo_name, "w") as f:
            f.write(yolo_ann)
        # Convert to labelme and save json file
        res = ann.to_labelme(file, save_img_data=False)
        with open((out_labelme / file.name).with_suffix(".json"), "w") as f:
            json.dump(res, f, indent=2)
        # Draw objects
        img = Image.open(file)
        draw_img = ann.draw_boxes(img)
        draw_img.show()
Visualization example:
draw_img = ann.draw_boxes(img)
draw_img.show()

vis_example

Installation

From source

python setup.py install

Using pip

pip install pascal-voc

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

pascal_voc-2.1.6.tar.gz (219.5 kB view details)

Uploaded Source

Built Distribution

pascal_voc-2.1.6-py3-none-any.whl (426.7 kB view details)

Uploaded Python 3

File details

Details for the file pascal_voc-2.1.6.tar.gz.

File metadata

  • Download URL: pascal_voc-2.1.6.tar.gz
  • Upload date:
  • Size: 219.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.12

File hashes

Hashes for pascal_voc-2.1.6.tar.gz
Algorithm Hash digest
SHA256 8417617837645f0e4674b5dd7d27e4619e1392eb79c9cc2edbb70dc0c9e3def6
MD5 df01081ab9e8c1298f17dbab1d3f9378
BLAKE2b-256 7e130e24fcdea2e7b3913bf019a54596291ecf8b1041e72834b7a3f7b6c603c7

See more details on using hashes here.

File details

Details for the file pascal_voc-2.1.6-py3-none-any.whl.

File metadata

  • Download URL: pascal_voc-2.1.6-py3-none-any.whl
  • Upload date:
  • Size: 426.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.12

File hashes

Hashes for pascal_voc-2.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 8f1b0533b5b7b05f25d55af5a4ab91ade884f7c45abaae48b304a68646b4ba3c
MD5 44363deb1639e2f27ae8b2519bbca9f4
BLAKE2b-256 7abed2f2302ae488a6e594ae8032cfe8c8ad98847675398175840cf005c486a9

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page