File menu

Open images folder and annotations folder

You can open images and annotations folders.

You can drag & drop each images folder and annotations folder to the open table.

RectLabel reads/writes in the PASCAL VOC xml format or YOLO text format.

After opening images, we recommend to remove EXIF orientation flags.

├── images
│   ├── 0.jpg
│   └── 1.jpg
└── annotations
    ├── 0.xml or 0.txt
    └── 1.xml or 1.txt

Once opened images and annotations folders when the first launch, from the second launch, you can give command line arguments to RectLabel which image files should be opened.

open -a RectLabel --args -images 000000000872.jpg,000000180011.jpg
open -a RectLabel\ Pro --args -images 000000000872.jpg,000000180011.jpg

Image file names which include "_pixels" are skipped because the suffix is used in the pixels image file.

Image file names which include "_depth" are skipped because the suffix is used in the depth image file.

To copy the current image file name, click on the image file name shown at the top-left corner.

Open images folder

For the annotations folder, we use "images/annotations" folder.

└── images
    ├── annotations
    ├── 0.jpg
    └── 1.jpg

Open a folder which includes a yaml file

For the exported YOLOv5 or YOLOv8 folder from Roboflow, you can open train/valid/test folders at once and import the object names from the yaml file.

└── exported_YOLOv5_YOLOv8_folder
    ├── data.yaml
    ├── train
    │   ├── images
    │   └── labels
    ├── valid
    │   ├── images
    │   └── labels
    └── test
        ├── images
        └── labels

Open destination folder for symbolic links

After opening images and annotations folders which include symbolic links, you need to "Open destination folder for symbolic links" to open the destination folder which includes images and annotations files pointed by symbolic links.

├── images0
│   ├── 0.jpg
│   └── 1.jpg
├── images1
│   ├── 2.jpg
│   └── 3.jpg
└── symbolic_links
    ├── 0.jpg
    ├── 1.jpg
    ├── 2.jpg
    └── 3.jpg

Convert video to image frames

For "Video file", open a video file.

For "Output folder", open a folder to save the image frames.

For "Image size", both width and height would be less than or equal to the size.

For "Frame suffix", to correspond to the labels folder generated by detect.py in the yolov5 folder, select the second one.

Video to image frames, augment images, etc.

Remove EXIF orientation flags

On RectLabel, according to the Exif orientation flags, each image is rotated and shown in the front orientation.

You can remove the EXIF orientation flags from images and convert images to the front orientation.

If necessary, you can rotate the image right/left.

Resize images

You can resize images and annotations.

For "Image size", both width and height would be less than or equal to the size.

If "Image size" is empty, images are not resized but annotations are resized to the same size as images.

Next image and Prev image

To show the next image, press the right arrow key.

To show the previous image, press the left arrow key.

Pressing Command + right/left arrow key, the step size becomes 10.

You can use Trackpad gestures and Magic Mouse gestures.

Jump to image number

You can specify the image number to show.

Move images

You can move all images to another folder.

Searching images, you can move searched images to another folder.

Copy images

You can copy all images to another folder.

Searching images, you can copy searched images to another folder.

Save

The annotation file is saved as {image_file_name}.xml in the PASCAL VOC xml format or {image_file_name}.txt in the YOLO text format.

For the PASCAL VOC xml format, the top-left pixel in the image has coordinates (1, 1).

<annotation>
    <folder>test</folder>
    <filename>test.jpg</filename>
    <size>
        <width>2268</width>
        <height>4032</height>
        <depth>3</depth>
    </size>
    <object>
        <name>box</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <occluded>0</occluded>
        <difficult>0</difficult>
        <bndbox>
            <xmin>150.933868</xmin>
            <ymin>378.906250</ymin>
            <xmax>756.666626</xmax>
            <ymax>787.804810</ymax>
        </bndbox>
    </object>
    <object>
        <name>rotated box</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <occluded>0</occluded>
        <difficult>0</difficult>
        <rotated_box>
            <cx>441.805573</cx>
            <cy>1321.172485</cy>
            <width>606.780457</width>
            <height>409.866486</height>
            <rot>0.359418</rot>
        </rotated_box>
        <polygon>
            <x1>230.156912</x1>
            <y1>1619.152571</y1>
            <x2>797.184426</x2>
            <y2>1405.963125</y2>
            <x3>653.454165</x3>
            <y3>1023.192414</y3>
            <x4>86.426712</x4>
            <y4>1236.381875</y4>
        </polygon>
        <bndbox>
            <xmin>86.426712</xmin>
            <ymin>1023.192444</ymin>
            <xmax>797.184448</xmax>
            <ymax>1619.152588</ymax>
        </bndbox>
    </object>
    <object>
        <name>polygon</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <occluded>0</occluded>
        <difficult>0</difficult>
        <polygon>
            <x1>130.462251</x1>
            <y1>2242.434489</y1>
            <x2>231.116800</x2>
            <y2>1834.729854</y2>
            <x3>975.916579</x3>
            <y3>2089.992226</y3>
        </polygon>
        <bndbox>
            <xmin>130.462250</xmin>
            <ymin>1834.729858</ymin>
            <xmax>975.916565</xmax>
            <ymax>2242.434570</ymax>
        </bndbox>
    </object>
    <object>
        <name>cubic_bezier</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <occluded>0</occluded>
        <difficult>0</difficult>
        <cubic_bezier>
            <x1>186.306561</x1>
            <y1>3037.549490</y1>
            <x2>454.431347</x2>
            <y2>2544.621475</y2>
            <x3>1174.717934</x3>
            <y3>2937.756268</y3>
        </cubic_bezier>
        <bndbox>
            <xmin>186.306564</xmin>
            <ymin>2544.621582</ymin>
            <xmax>1174.717896</xmax>
            <ymax>3037.549561</ymax>
        </bndbox>
    </object>
    <object>
        <name>line</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <occluded>0</occluded>
        <difficult>0</difficult>
        <line>
            <x1>1138.292962</x1>
            <y1>719.470419</y1>
            <x2>1817.358518</x2>
            <y2>418.130334</y2>
        </line>
        <bndbox>
            <xmin>1138.292969</xmin>
            <ymin>418.130341</ymin>
            <xmax>1817.358521</xmax>
            <ymax>719.470398</ymax>
        </bndbox>
    </object>
    <object>
        <name>point</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <occluded>0</occluded>
        <difficult>0</difficult>
        <point>
            <x1>1449.096405</x1>
            <y1>1231.845800</y1>
        </point>
    </object>
    <object>
        <name>keypoints</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <occluded>0</occluded>
        <difficult>0</difficult>
        <keypoints>
            <x1>1477.371211</x1>
            <y1>1652.332374</y1>
            <v1>2</v1>
            <x2>1979.029598</x2>
            <y2>2152.412000</y2>
            <v2>2</v2>
            <x3>1322.674793</x3>
            <y3>2393.763232</y3>
            <v3>2</v3>
        </keypoints>
        <bndbox>
            <xmin>1322.674805</xmin>
            <ymin>1652.332397</ymin>
            <xmax>1979.029663</xmax>
            <ymax>2393.763184</ymax>
        </bndbox>
    </object>
    <object>
        <name>pixels</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <occluded>0</occluded>
        <difficult>0</difficult>
        <pixels>
            <id>0</id>
        </pixels>
        <bndbox>
            <xmin>1091.518921</xmin>
            <ymin>370.908264</ymin>
            <xmax>2183.037354</xmax>
            <ymax>2503.379150</ymax>
        </bndbox>
    </object>
</annotation>

Close folder

You can close current images and annotations folders.