Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nextml-code/next-cvat
https://github.com/nextml-code/next-cvat
Last synced: 1 day ago
JSON representation
- Host: GitHub
- URL: https://github.com/nextml-code/next-cvat
- Owner: nextml-code
- Created: 2024-09-27T11:55:15.000Z (4 months ago)
- Default Branch: master
- Last Pushed: 2025-01-02T09:24:10.000Z (13 days ago)
- Last Synced: 2025-01-02T10:33:33.391Z (13 days ago)
- Language: Python
- Size: 234 KB
- Stars: 0
- Watchers: 4
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# next-cvat
Minimalistic python SDK for CVAT.
Downloads and decodes annotations on the format "CVAT for images 1.1".
📚 [Read the documentation](https://nextml-code.github.io/next-cvat)
## Usage
Either add environment variables to your global environment or create an env file.
```bash
CVAT_USERNAME=username
CVAT_PASSWORD=password
```If you don't want to use your username and password, you can create a token:
```bash
cvat create-token
```And use it like this:
```bash
CVAT_TOKEN=token
```_Note that the token expires in 14 days._
### Download dataset
```python
import next_cvatif __name__ == "__main__":
(
next_cvat.Client.from_env_file(".env.cvat.secrets")
.project(1234)
.download_(dataset_path="dataset-path")
)
```or using CLI:
```bash
cvat download --project-id --dataset-path
```### Load annotations
And then load annotations:
```python
from next_cvat import Annotationsannotations = Annotations.from_path("dataset-path/annotations.xml")
```### Upload images
Create a new task and upload images to it:
```python
import next_cvat
from pathlib import Pathclient = next_cvat.Client.from_env()
# Create a new task
task = client.create_task("My Task", project_id=1234)# Upload images
client.upload_images_(
task.id,
[
Path("images/image1.jpg"),
Path("images/image2.jpg"),
]
)
```### Update annotations
```python
client = next_cvat.Client.from_env_file(".env.cvat.secrets")job = client.project(project_id).task(task_id).job(job_id)
annotations = job.annotations()
annotations.add_mask_(
next_cvat.Mask.from_segmentation(
segmentation=Image.open("tests/test_vegetation_mask.png"),
label="Deformation",
),
image_name="20240916_000854_2011T_437.bmp",
)job.update_annotations_(annotations)
```### Delete frames
Delete a frame from a task:
```python
# Get a frame by its index (0-based) or by name
frame = task.frame(frame_id=0) # or task.frame(name="image1.jpg")# Delete the frame
task.delete_frame_(frame.id)
```### Low-level API
```python
from next_cvat import Clientclient = Client.from_env_file(".env.cvat.secrets")
with client.cvat_client() as cvat_client:
cvat_client.get_tasks()
```## Development
To build the docs:
```bash
poetry run mkdocs build
```To serve the docs:
```bash
poetry run mkdocs serve
```