Skip to main content

Package To Convert Json Files To PascalVOC XML files

Project description

JsonToPascalVoc

Json2PascalVoc is a Python library for converting some special Json strings to PascalVOC format XML files.

Installation

Use the package manager pip to install JsonToPascalVoc. Or download package from GitHub

pip install Json2PascalVoc

Usage

from Json2PascalVoc import Converter

myConverter = Converter()
# returns a Converter Object
myConverter.convertJsonToPascal("data.json")
# Converts Json to PascalVOC XML and saves the XML file to the related file path

An example data.json file is :

{
   "data":[
      {
         "annotation":{
            "folder":"class1",
            "filename":"_ADC0362.jpg",
            "path":"~/Desktop/Dev/data/foo/train/class1/_ADC0362.jpg",
            "source":{
               "database":"Unknown"
            },
            "size":{
               "width":1500,
               "height":1500,
               "depth":3
            },
            "segmented":0,
            "object":[
               {
                  "name":"class1",
                  "pose":"Unspecified",
                  "truncated":0,
                  "difficult":0,
                  "bndbox":{
                     "xmin":579,
                     "ymin":584,
                     "xmax":924,
                     "ymax":1120
                  }
               },
               {
                  "name":"class1",
                  "pose":"Unspecified",
                  "truncated":0,
                  "difficult":0,
                  "bndbox":{
                     "xmin":120,
                     "ymin":400,
                     "xmax":1150,
                     "ymax":800
                  }
               }

            ]
         }
      },
      {
         "annotation":{
            "folder":"class1",
            "filename":"_ADC0373.jpg",
            "path":"~/Desktop/Dev/data/foo/train/class1/_ADC0373.jpg",
            "source":{
               "database":"Unknown"
            },
            "size":{
               "width":1500,
               "height":1500,
               "depth":3
            },
            "segmented":0,
            "object":[
               {
                  "name":"class1",
                  "pose":"Unspecified",
                  "truncated":0,
                  "difficult":0,
                  "bndbox":{
                     "xmin":487,
                     "ymin":558,
                     "xmax":798,
                     "ymax":942
                  }
               }
            ]
         }
      }
   ]
}

Notes:

1- "data" array of Json can contain multiple "annotation" objects for different images.

2- "annotation" objects can contain multiple "object" attributes for multi object detecting in a single image.

3- PascalVOC formatted XML files are saved to the path that is given in "annotation.path" for each image/"annotation"

The output XML for an image is like :

<?xml version="1.0" encoding="UTF-8"?>
<annotation>
   <folder name="folder">class1</folder>
   <filename name="filename">_ADC0362.jpg</filename>
   <path name="path">~/Desktop/Dev/data/foo/train/class1/_ADC0362.jpg</path>
   <source>
      <database name="database">Unknown</database>
   </source>
   <size>
      <width name="width">1500</width>
      <height name="height">1500</height>
      <depth name="depth">3</depth>
   </size>
   <segmented name="segmented">0</segmented>
   <object>
      <name name="name">class1</name>
      <pose name="pose">Unspecified</pose>
      <truncated name="truncated">0</truncated>
      <difficult name="difficult">0</difficult>
      <bndbox>
         <xmin name="xmin">579</xmin>
         <ymin name="ymin">584</ymin>
         <xmax name="xmax">924</xmax>
         <ymax name="ymax">1120</ymax>
      </bndbox>
   </object>
   <object>
      <name name="name">class1</name>
      <pose name="pose">Unspecified</pose>
      <truncated name="truncated">0</truncated>
      <difficult name="difficult">0</difficult>
      <bndbox>
         <xmin name="xmin">120</xmin>
         <ymin name="ymin">400</ymin>
         <xmax name="xmax">1150</xmax>
         <ymax name="ymax">800</ymax>
      </bndbox>
   </object>
</annotation>

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

License

MIT

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

Json2PascalVoc-1.0.0.tar.gz (3.7 kB view hashes)

Uploaded Source

Built Distribution

Json2PascalVoc-1.0.0-py3-none-any.whl (4.4 kB view hashes)

Uploaded Python 3

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