https://github.com/poupeaua/otary
Otary — elegant, readable, and powerful image and 2D geometry Python library.
https://github.com/poupeaua/otary
2d geometric geometric-algorithms geometry geometry-processing image image-analysis image-manipulation image-processing open-source
Last synced: 17 days ago
JSON representation
Otary — elegant, readable, and powerful image and 2D geometry Python library.
- Host: GitHub
- URL: https://github.com/poupeaua/otary
- Owner: poupeaua
- License: bsd-3-clause
- Created: 2025-07-09T10:38:47.000Z (7 months ago)
- Default Branch: master
- Last Pushed: 2026-01-16T15:09:32.000Z (24 days ago)
- Last Synced: 2026-01-17T04:47:22.675Z (24 days ago)
- Topics: 2d, geometric, geometric-algorithms, geometry, geometry-processing, image, image-analysis, image-manipulation, image-processing, open-source
- Language: Python
- Homepage: https://alexandrepoupeau.com/otary/
- Size: 2.16 MB
- Stars: 56
- Watchers: 0
- Forks: 1
- Open Issues: 28
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Citation: CITATION.cff
Awesome Lists containing this project
README
Otary library, shape your images, image your shapes.
# Welcome to Otary
Otary — elegant, readable, and powerful image and 2D geometry Python library.
## Features
The main features of Otary are:
- **Unification**: Otary offers a cohesive solution for image and geometry manipulation, letting you work seamlessly without switching tools.
- **Readability**: Self-explanatory by design. Otary’s clean, readable code eliminates the need for comments, making it easy for beginners to learn and for experts to build efficiently.
- **Performance**: optimized for speed and efficiency, making it suitable for high-performance applications. It is built on top of [NumPy](https://numpy.org) and [OpenCV](https://opencv.org), which are known for their speed and performance.
- **Interactivity**: designed to be Interactive and user-friendly, ideal for [Jupyter notebooks](https://jupyter.org) and live exploration.
- **Flexibility**: provides a flexible and extensible architecture, allowing developers to customize and extend its functionality as needed.
## Installation
Otary is available on [PyPI](https://pypi.org/project/otary/). You can install it with:
```bash
pip install otary
```
## Example
Let me illustrate the usage of Otary with a simple example. Imagine you need to:
1. read an image from a pdf file
2. draw an rectangle on it, shift and rotate the rectangle
3. crop a part of the image
4. rotate the cropped image
5. apply a threshold
6. show the image
In order to compare the use of Otary versus other libraries, I will use the same example but with different libraries. Try it yourself on your favorite LLM (like [ChatGPT](https://chatgpt.com/)) by copying the query:
```text
Generate a python code to read an image from a pdf, draw a rectangle on it, shift and rotate the rectangle, crop a part of the image, rotate the cropped image, apply a threshold on the image.
```
Using Otary you can do it with few lines of code:
```python
import otary as ot
im = ot.Image.from_pdf("path/to/you/file.pdf", page_nb=0)
rectangle = ot.Rectangle([[1, 1], [4, 1], [4, 4], [1, 4]]) * 100
rectangle.shift([50, 50]).rotate(angle=30, is_degree=True)
im = (
im.draw_polygons([rectangle])
.crop(x0=50, y0=50, x1=450, y1=450)
.rotate(angle=90, is_degree=True)
.threshold_simple(thresh=200)
)
im.show()
```
Using Otary makes the code:
- Much more **readable** and hence **maintainable**
- Much more **interactive**
- Much simpler, simplifying **libraries management** by only using one library and not manipulating multiple libraries like Pillow, OpenCV, Scikit-Image, PyMuPDF etc.
## Enhanced Interactivity
In a Jupyter notebook, you can easily test and iterate on transformations by simply commenting part of the code as you need it.
```python
im = (
im.draw_polygons([rectangle])
# .crop(x0=50, y0=50, x1=450, y1=450)
# .rotate(angle=90, is_degree=True)
.threshold_simple(thresh=200)
)
```