Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/krshrimali/image-annotator-rust
Cross Platform App to validate a folder of images (with pan and zoom features), mostly for dataset annotation purposes.
https://github.com/krshrimali/image-annotator-rust
iced iced-rs rust
Last synced: 3 months ago
JSON representation
Cross Platform App to validate a folder of images (with pan and zoom features), mostly for dataset annotation purposes.
- Host: GitHub
- URL: https://github.com/krshrimali/image-annotator-rust
- Owner: krshrimali
- License: gpl-2.0
- Created: 2022-12-26T15:20:28.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-02-15T13:36:29.000Z (12 months ago)
- Last Synced: 2024-10-04T22:12:53.280Z (4 months ago)
- Topics: iced, iced-rs, rust
- Language: Rust
- Homepage: https://www.youtube.com/watch?v=vryKN6d9qI8
- Size: 43.3 MB
- Stars: 5
- Watchers: 4
- Forks: 3
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
Awesome Lists containing this project
README
## Key Features
**Note**: I'm actively working on this app's first release. Please hop on to the [issues page](https://github.com/krshrimali/image-annotator-rust-app/issues) if you would like to contribute.
1. Select folder with images to mark annotated images.
2. Zoom (like pinch zoom) and pan images in the view.
3. Options available: Mark as Correct, Mark as Incorrect, Reset Selection.
4. Export as a JSON file.
5. The JSON file can retain previously annotated folders.
6. See the info (track current image path, folder path, total files etc.) in the window itself.
7. Invalid files are ignored, and a proper text is shown instead of the image viewer.
8. Any sub-directories in the selected folder are ignored.
9. Image file sizes are retained, and the app is scrollable + resizable.
10. Binaries are available for Windows, OSX and Linux, [here](https://github.com/krshrimali/validate-image-annotations-rust/tree/main/binaries).
11. Built 100% with Rust, GUI built using [Iced library](https://github.com/iced-rs/iced/)## Description and Demo
**Theme Switching**
The app saves you some eye strain with dark and light theme switching option.
![Screenshot from 2023-01-29 12-54-20](https://user-images.githubusercontent.com/19997320/215311668-bc935e22-fcc6-4882-bf7e-21d48b6173d0.png)
**Welcome page - select your folder**
- Any sub-folders present in the selected folder will be ignored.
- File validation is done while traversing through the folder, to save time.**Verify annotation**
- Option to mark as correct/incorrect or reset selection.
- Click `Export` to export the results to a JSON file. (`output.json` in the folder where you started the app from)
- Mark as Incorrect will have an option to add comments (optional)**Invalid file**
![invalid_file](https://user-images.githubusercontent.com/19997320/215312196-bdc46516-2dd8-4fb2-8b00-416e9fbd47ed.png)
- In case a file is invalid, or the image couldn't be loaded, a message will appear and a user can see the file path in the info below to the text.
**Add comments (optional)**
![output_annotation](https://user-images.githubusercontent.com/19997320/215312198-0a089cc0-1a18-4727-b433-a9ad0a9b91c3.jpeg)
## Output
A sample output is given [here](https://github.com/krshrimali/image-annotator-rust-app/blob/main/output.json)
```json
{
"image_to_properties_map": {
"/home/krshrimali/Documents/Projects/rust/image-annotator-rust-app/sample_folder": [
{
"index": 0,
"image_path": "/home/krshrimali/Documents/Projects/rust/image-annotator-rust-app/sample_folder/invalid_file.txt",
"annotation": null,
"comments": null,
"last_updated": "2023-02-05 12:53:28.343688759 +05:30"
},
{
"index": 1,
"image_path": "/home/krshrimali/Documents/Projects/rust/image-annotator-rust-app/sample_folder/sample.webp",
"annotation": null,
"comments": null,
"last_updated": "2023-02-05 12:53:28.343921942 +05:30"
},
{
"index": 2,
"image_path": "/home/krshrimali/Documents/Projects/rust/image-annotator-rust-app/sample_folder/nature-3082832__480.jpg",
"annotation": null,
"comments": null,
"last_updated": "2023-02-05 12:53:28.343935682 +05:30"
}
]
}
}
```## Build from source
If you are on Linux, following libraries are required:
1. Rust toolchain, see: [this](https://doc.rust-lang.org/cargo/getting-started/installation.html) for instructions.
2. `cmake`, `pkg-config`, `fontconfig`.
3. [OpenSSL 3.0](https://openssl.org/)
4. `libgtk-3-dev` (GTK 3.0 dev libraries)Once done, follow the instructions below:
```shell
# Build porject
cargo build
# Build binary for release
cargo build --release
# Run the app
cargo run
```