{"id":13723802,"url":"https://github.com/StrayRobots/3d-annotation-tool","last_synced_at":"2025-05-07T17:31:32.353Z","repository":{"id":42190766,"uuid":"349217659","full_name":"strayrobots/3d-annotation-tool","owner":"strayrobots","description":"A graphical user interface to annotate point clouds and 3D data.","archived":false,"fork":false,"pushed_at":"2022-06-27T09:19:18.000Z","size":947,"stargazers_count":76,"open_issues_count":4,"forks_count":8,"subscribers_count":6,"default_branch":"main","last_synced_at":"2024-08-04T01:22:13.384Z","etag":null,"topics":["3d-vision","bgfx","computer-vision","cpp","detection","labeling-tool","lidar","point-cloud"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/strayrobots.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-03-18T21:09:13.000Z","updated_at":"2024-06-17T23:57:12.000Z","dependencies_parsed_at":"2022-08-12T09:00:40.554Z","dependency_job_id":null,"html_url":"https://github.com/strayrobots/3d-annotation-tool","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/strayrobots%2F3d-annotation-tool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/strayrobots%2F3d-annotation-tool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/strayrobots%2F3d-annotation-tool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/strayrobots%2F3d-annotation-tool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/strayrobots","download_url":"https://codeload.github.com/strayrobots/3d-annotation-tool/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224628160,"owners_count":17343282,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["3d-vision","bgfx","computer-vision","cpp","detection","labeling-tool","lidar","point-cloud"],"created_at":"2024-08-03T01:01:45.810Z","updated_at":"2024-11-14T13:31:03.395Z","avatar_url":"https://github.com/strayrobots.png","language":"C++","funding_links":[],"categories":["Data Visualization and Mission Control","Software (Open Source)"],"sub_categories":["Annotation"],"readme":"# Stray Studio - 3D Data Annotation Tool\n\nThis project is a graphical user interface for annotating point clouds and [Stray scenes](https://docs.strayrobots.io/formats/data.html).\n\nSeveral different label types are supported, including:\n- Bounding boxes\n- Keypoints\n- Rectangles\n\n### Bounding Box Labels\n\n![Bounding box label type](assets/bbox.jpg)\n\nAn example of a bounding box is shown above. They have the following properties:\n- `class_id` the class id of the label.\n- `position` the x, y, z position relative to the point cloud.\n- `orientation` the rotation that transforms vectors in the box coordinate frame to the point cloud coordinate frame.\n- `dimensions` three values denoting the width along the x, y and z axes in the bounding boxes local coordinate frame.\n\n### Keypoint Labels\n\n![Keypoint label type](assets/keypoint.jpg)\n\nKeypoints are individual points in the global coordinate frame. They have the following properties:\n- `class_id` the class id of the label.\n- `position` the x, y, z position in the global frame.\n\n### Rectangle Labels\n\n![Oriented rectangle label type](assets/rectangle.jpg)\n\nRectangles, show above, are rectangular planes that have a size (height and width), an orientation and position.\n\nThe properties are:\n- `class_id` the class id of the label.\n- `position` the x, y, z position of the center in the global frame.\n- `orientation` the rotation taking vectors in local frame to the world frame.\n- `size` width and height of the rectangle.\n\n## Installation\n\n### Install Dependencies - Mac\n1. Install Homebrew: https://brew.sh/\n2. Run `brew update \u0026\u0026 brew install cmake libomp eigen boost git-lfs pkg-config`\n\n### Install Dependencies - Linux\n1. RUN `sudo apt install libeigen3-dev libglfw3-dev libomp-dev libxinerama-dev libxcursor-dev libxi-dev git-lfs cmake libboost-all-dev`\n\n### Build and install the annotation tool\n1. Get the source code `git clone https://github.com/StrayRobots/3d-annotation-tool.git` (requires [git](https://git-scm.com/))\n2. Navigate to the `3d-annotation-tool` directory (e.g. `cd 3d-annotation-tool`)\n3. Initialize git submodules with `git submodule update --init --recursive`\n4. Create a build directory with `mkdir build`\n5. Pull `git-lfs` objects (helper meshes etc) with `git lfs install \u0026\u0026 git lfs pull`\n6. To build the project run `cd build \u0026\u0026 cmake .. \u0026\u0026 make -j8` (`-j8` specifies the number of parallel jobs, for a fewer jobs use a lower number (than `8`))\n7. The executable is called `studio`, it can be executed with `./studio \u003cpath-to-pointcloud\u003e`. You can find an example `cloud.ply` point cloud  from [here](https://stray-data.nyc3.digitaloceanspaces.com/tutorials/cloud.ply). `\u003cpath-to-pointcloud\u003e` should then specify the absolute path to the downloaded file.\n\n## Usage\n\nRun `./studio \u003cpath-to-pointcloud\u003e` to open a point cloud in the viewer. Currently only `.ply` point clouds are supported. Annotations are saved into a file of with the same filename but a `.json` file extension. When annotating point clouds, you can move to the next point cloud in the same directory as `\u003cpath-to-pointcloud\u003e` using `tab`.\n\nAn example `cloud.ply` point cloud can be downloaded from [here](https://stray-data.nyc3.digitaloceanspaces.com/tutorials/cloud.ply).\n\nThe keyboard shortcuts are:\n- `ctrl+s` to save the annotations.\n- `k` switches to the keypoint tool.\n- `b` switches to the bounding box tool.\n- `r` switches to the rectangle tool.\n- `v` switches to the move tool.\n\n## The Stray Toolkit\n\nThis project is part of the [Stray command line interface](https://docs.strayrobots.io/), a toolkit to make building 3D computer vision applications easy. Stray Studio can be used through the `stray studio` command.\n\nThe Stray toolkit allows you to build point clouds out of handheld or robot mounted RGB-D scans. It also contains utility functions to manage datasets and export labels into commonly used formats, such as Yolo for object detection.\n\n## Running tests\n\nIn your build directory, run:\n```\ncmake .. -DBUILD_TESTS=1\nmake build_tests\nctest\n```\n\n## Code formatting\n\nCode can be formatted using clang-format.\n\nInstall clang-format on Mac (brew):\n\n`brew install clang-format`\n\nInstall clang-format on Ubuntu:\n\n`sudo apt install clang-format`\n\nThere's a script that runs formatting on all .h and .cc files based on the .clang-format file. Usage: `./run_formatting`\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FStrayRobots%2F3d-annotation-tool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FStrayRobots%2F3d-annotation-tool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FStrayRobots%2F3d-annotation-tool/lists"}