{"id":15055892,"url":"https://github.com/mfl28/boundingboxeditor","last_synced_at":"2025-04-10T03:54:42.447Z","repository":{"id":36919102,"uuid":"193731921","full_name":"mfl28/BoundingBoxEditor","owner":"mfl28","description":"A JavaFX desktop application for creating image-object-annotations with bounding boxes.","archived":false,"fork":false,"pushed_at":"2025-03-15T12:46:24.000Z","size":64044,"stargazers_count":53,"open_issues_count":0,"forks_count":8,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-10T03:54:27.418Z","etag":null,"topics":["annotation-tool","bounding-boxes","computer-vision-annotation","desktop-application","detection","image-annotation","image-labeling","java","javafx","javafx-application","javafx-desktop-apps","labeling","tools"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mfl28.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-06-25T15:11:13.000Z","updated_at":"2025-04-02T10:01:55.000Z","dependencies_parsed_at":"2023-01-17T07:15:27.375Z","dependency_job_id":"d7652a7c-3bfe-4a51-ac1c-7f1ebccd759b","html_url":"https://github.com/mfl28/BoundingBoxEditor","commit_stats":null,"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mfl28%2FBoundingBoxEditor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mfl28%2FBoundingBoxEditor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mfl28%2FBoundingBoxEditor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mfl28%2FBoundingBoxEditor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mfl28","download_url":"https://codeload.github.com/mfl28/BoundingBoxEditor/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248154999,"owners_count":21056542,"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":["annotation-tool","bounding-boxes","computer-vision-annotation","desktop-application","detection","image-annotation","image-labeling","java","javafx","javafx-application","javafx-desktop-apps","labeling","tools"],"created_at":"2024-09-24T21:46:58.545Z","updated_at":"2025-04-10T03:54:42.433Z","avatar_url":"https://github.com/mfl28.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"src/main/resources/icons/app_icon.svg\" height= \"80\" width=\"80\" alt=\"Bounding Box Editor Icon\"\u003e\n  \u003cbr/\u003e\n  \u003cimg src=\"demo-media/logo-text.svg\" height=\"30\" alt=\"Bounding Box Editor\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/mfl28/BoundingBoxEditor/actions\"\u003e\n    \u003cimg src=\"https://github.com/mfl28/BoundingBoxEditor/workflows/Build/badge.svg\" alt=\"Build Status\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://codecov.io/gh/mfl28/BoundingBoxEditor\"\u003e\n    \u003cimg src=\"https://codecov.io/gh/mfl28/BoundingBoxEditor/branch/master/graph/badge.svg\" alt=\"Codecov Coverage (master)\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://sonarcloud.io/dashboard?id=mfl28_BoundingBoxEditor\"\u003e\n    \u003cimg src=\"https://sonarcloud.io/api/project_badges/measure?project=mfl28_BoundingBoxEditor\u0026metric=alert_status\" alt=\"Quality Gate Status\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/mfl28/BoundingBoxEditor/actions/workflows/codeql.yml\"\u003e\n    \u003cimg src=\"https://github.com/mfl28/BoundingBoxEditor/actions/workflows/codeql.yml/badge.svg\" alt=\"CodeQL\"\u003e\n  \u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/github/downloads/mfl28/boundingboxeditor/total\" alt=\"Github all releases\"\u003e\n  \u003ca href=\"https://github.com/mfl28/BoundingBoxEditor/releases/latest\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/v/release/mfl28/BoundingBoxEditor?label=release\" alt=\"GitHub Release (latest by date)\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"LICENSE\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/license-GPLv3-informational\" alt=\"License\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\nThis is an image annotation desktop-application written in Java using the JavaFX application platform. It allows you to create bounding box annotations using rectangular and polygonal shapes. \nAnnotations can be imported and saved from/to JSON files, [Pascal VOC](http://host.robots.ox.ac.uk/pascal/VOC/) format XML-files or [YOLO](https://pjreddie.com/darknet/yolo/) format TXT-files.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"demo-media/demo_v2_0_0.png\" align=\"center\"\u003e\n  \u003c/br\u003e\n  \u003cem\u003eDemo screenshot of release v2.0.0.\u003c/em\u003e\n\u003c/p\u003e\n\n## Main Features\n* Create rectangular and polygonal (\"vertices-clicking\" and \"freehand-drawing\" modes) bounding box annotations for objects in images\n* Export and import  rectangular and polygonal bounding box annotations to and from JSON and XML files (using [Pascal VOC](http://host.robots.ox.ac.uk/pascal/VOC/) format)\n* Export and import rectangular bounding box annotations using the [YOLO](https://pjreddie.com/darknet/yolo/) format\n* Connect your own [Torch Serve](https://pytorch.org/serve/) prediction endpoint and use bounding box predictions as annotation hints\n* Format validation and error reporting when importing annotations\n* Nest bounding box labels (which is then reflected in the output XML-file if using Pascal VOC format)\n* Easily and swiftly navigate and search the loaded image files via a side-panel with thumbnails\n* Tag bounding boxes using tags defined in the Pascal VOC format (truncated, difficult, occluded, pose: *, action: *)\n* Color-coded, searchable and fully dynamic object categories\n\n## Latest Release \n[![GitHub release (latest by date)](https://img.shields.io/github/v/release/mfl28/BoundingBoxEditor?label=release\u0026style=for-the-badge)](https://github.com/mfl28/BoundingBoxEditor/releases/latest)\n![platform](https://img.shields.io/static/v1.svg?label=Platform\u0026message=Linux%20|%20macOS%20|%20Win%20\u0026style=for-the-badge)\n\nDownload the latest release installer or portable image (no installation required) of *Bounding Box Editor* for your operating system from the links below. These files were created using the\n[jpackage](https://openjdk.java.net/jeps/343) packaging tool, the [Badass JLink Gradle plugin](https://github.com/beryx/badass-jlink-plugin) and [github-actions](.github/workflows/workflow.yml).\n\n| OS            | Installer                                                                                                                                                                                                                       | Portable | Stats                                                                                                                                                      |\n| ------------- |---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -------- |------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Linux | [deb](https://github.com/mfl28/BoundingBoxEditor/releases/latest/download/boundingboxeditor_2.8.0-1_amd64.deb), [rpm](https://github.com/mfl28/BoundingBoxEditor/releases/latest/download/boundingboxeditor-2.8.0-1.x86_64.rpm) | [image](https://github.com/mfl28/BoundingBoxEditor/releases/latest/download/boundingboxeditor-portable-linux.zip)| ![GitHub release (latest by SemVer and asset)](https://img.shields.io/github/downloads/mfl28/boundingboxeditor/latest/boundingboxeditor_2.8.0-1_amd64.deb) |\n| macOS | [dmg](https://github.com/mfl28/BoundingBoxEditor/releases/latest/download/boundingboxeditor-2.8.0.dmg)                                                                                                                          | [image](https://github.com/mfl28/BoundingBoxEditor/releases/latest/download/boundingboxeditor-portable-macos.zip) | ![GitHub release (latest by SemVer and asset)](https://img.shields.io/github/downloads/mfl28/boundingboxeditor/latest/boundingboxeditor-2.8.0.dmg)         |\n| Windows | [exe](https://github.com/mfl28/BoundingBoxEditor/releases/latest/download/boundingboxeditor-2.8.0.exe)                                                                                                                          | [image](https://github.com/mfl28/BoundingBoxEditor/releases/latest/download/boundingboxeditor-portable-windows.zip) | ![GitHub release (latest by SemVer and asset)](https://img.shields.io/github/downloads/mfl28/boundingboxeditor/latest/boundingboxeditor-2.8.0.exe)         | \n\n### Alternative installation methods\n#### Windows\n[![Chocolatey Version (including pre-releases)](https://img.shields.io/chocolatey/v/boundingboxeditor?style=flat-square)](https://chocolatey.org/packages/boundingboxeditor)\n```\nchoco install boundingboxeditor\n```\n\n## How to use the application\nPlease refer to the [User Manual](https://github.com/mfl28/BoundingBoxEditor/wiki#user-manual) in the Wiki for a detailed usage guide and presentation (including gifs) of the application's main functions.\n\n## Using annotations for object detection\nAfter having created annotations for your images, you can use the saved bounding boxes as ground-truths in the training and evaluation of neural networks in order to perform object-detection tasks. How this can be done for any kind of labeled objects using Python and the [Pytorch](https://pytorch.org/) deep learning library is shown exemplarily in the [Humpback Whale Fluke Detection - Jupyter notebook](https://nbviewer.jupyter.org/github/mfl28/MachineLearning/blob/master/notebooks/Humpback_Whale_Fluke_Detection.ipynb) which you can find in my [Machine Learning repo](https://github.com/mfl28/MachineLearning).\n\n## How to build the application\nThe project uses [Gradle](https://gradle.org/) as build-system.\nYou will need to have Gradle version 5+ and a Java JDK version 11+ installed on your system, e.g. from [OpenJDK](https://openjdk.java.net/). \nAfter cloning the repository into a folder on your machine you may build the application from the root folder by opening a command line and using:\n```bash\ngradlew build # Add \"-x test\" to skip the UI-tests.\n```\n*Note:* The concrete way of invoking `gradlew` depends on your OS and used command line: \n* __Linux \u0026 MacOs__: `./gradlew ...`\n* __Windows__:\n  - Command Prompt: `gradlew ...`\n  - Powershell: `.\\gradlew ...`\n\n## How to run the application\nTo run the app using Gradle, use:\n```bash\ngradlew run\n```\n\n## How to run the tests\nThe project comes equipped with automatic UI-tests which use [TestFX](https://github.com/TestFX/TestFX) and the [JUnit 5](https://junit.org/junit5/) testing frameworks. Due to some used functionality in the implemented tests it is (currently) not possible to run the tests in headless mode.\n\nTo run the tests, use :\n```bash\ngradlew test\n```\n\n## How to build the latest Linux image and installers using Docker\nFirst build the Docker image from the cloned repo's root directory using:\n```bash\ndocker image build -t bbeditor .\n```\nThen create a writable container layer over the image (without starting a container):\n```bash\ndocker container create --name bbeditor bbeditor\n```\nFinally, copy the directory containing the build artifacts to the host:\n```bash\ndocker container cp bbeditor:/artifacts .\n```\n\u003e **Alternative**:  \n\u003e If you have a recent Docker version that supports BuildKit engine (version \u003e= 19.03) you can do \n\u003e the whole build using a one-line command:\n\u003e```bash\n\u003e DOCKER_BUILDKIT=1 docker image build --target artifacts --output type=local,dest=. . \n\u003e```\n\n## Acknowledgements\n* [OpenJDK](https://openjdk.java.net/) (open-source implementation of the Java platform)\n* [OpenJFX](https://openjfx.io/) (open-source implementation of the JavaFX platform)\n* [ControlsFX](https://github.com/controlsfx/controlsfx) (used for progress dialogs)\n* [Caffeine](https://github.com/ben-manes/caffeine) (used for caching of images)\n* [Gson](https://github.com/google/gson) (used for JSON serialization \u0026 deserialization)\n* [Apache Commons](https://commons.apache.org/) (used for ListOrderedMap data structure and String/Iterator utilities)\n* [TestFX](https://github.com/TestFX/TestFX) (used for the tests)\n* [JUnit 5](https://junit.org/junit5/) (used for the tests)\n* [Jacoco](https://www.jacoco.org/jacoco/) (used for creating code coverage results)\n* [sass-gradle-plugin](https://github.com/EtienneMiret/sass-gradle-plugin) (used to compile .scss style-files into [JavaFX supported] .css files)\n* [Badass JLink Plugin](https://github.com/beryx/badass-jlink-plugin) (used to create modular runtime images of the application)\n* [Gradle Modules Plugin](https://github.com/java9-moduqlarity/gradle-modules-plugin) (used to run the tests on the classpath)\n* [Feather Icons](https://feathericons.com/)\n* [Nord Color-Palette](https://github.com/arcticicestudio/nord)\n* [Unsplash](https://unsplash.com/) (used as source for test- \u0026 demo-images)\n\n## License\nThis project is licensed under GPL v3. See [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmfl28%2Fboundingboxeditor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmfl28%2Fboundingboxeditor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmfl28%2Fboundingboxeditor/lists"}