Otary — elegant, readable, and powerful image and 2D geometry Python library.
Project description
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 and OpenCV, which are known for their speed and performance.
-
Interactivity: designed to be Interactive and user-friendly, ideal for Jupyter notebooks 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. You can install it with:
pip install otary
Example
Let me illustrate the usage of Otary with a simple example. Imagine you need to:
- read an image from a pdf file
- draw an rectangle on it, shift and rotate the rectangle
- crop a part of the image
- rotate the cropped image
- apply a threshold
- 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) by copying the query:
Generate a python code to read an image from a pdf, draw an 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:
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.
im = (
im.draw_polygons([rectangle])
# .crop(x0=50, y0=50, x1=450, y1=450)
# .rotate(angle=90, is_degree=True)
.threshold_simple(thresh=200)
)
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file otary-0.3.0.tar.gz.
File metadata
- Download URL: otary-0.3.0.tar.gz
- Upload date:
- Size: 67.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.4 CPython/3.13.1 Linux/6.11.0-1018-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
286cc08c24fe68e66f654f0a93cafc42a4f41061d575203f50e6ca9cb87c6dc8
|
|
| MD5 |
d36735743aeca675a123f64e5e42b0d9
|
|
| BLAKE2b-256 |
a667f59fe765178b17347c16845d5eae7c14b138aeb534fe819c8a1467d25fa9
|
File details
Details for the file otary-0.3.0-py3-none-any.whl.
File metadata
- Download URL: otary-0.3.0-py3-none-any.whl
- Upload date:
- Size: 91.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.4 CPython/3.13.1 Linux/6.11.0-1018-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b4ce54e7af01bf3abd3c0378d53c9d079fda7f3d720a8ffb6659d70a0059934d
|
|
| MD5 |
1f8544ebc66370556a1cd541d4ba8eee
|
|
| BLAKE2b-256 |
0ec9359a733aff84929c6c952fcaa7f5da3ce84dc320d440bc4ecd3060fc4ade
|