Zignal is a zero-dependency image processing library heavily inspired by the amazing dlib.
This library is in early stages of development and being used internally. As a result, the API might change often.
zig fetch --save git+https://github.com/bfactory-ai/zignal
Then, in your build.zig
const zignal = b.dependency("zignal", .{ .target = target, .optimize = optimize });
// And assuming that your b.addExecutable `exe`:
exe.root_module.addImport("zignal", zignal.module("zignal"));
// If you're creating a `module` using b.createModule, then:
module.addImport("zignal", zignal.module("zignal"));
pip install zignal-processing
Bindings | PyPI Package | Documentation
Interactive demos showcasing Zignal's capabilities:
- Color space conversions - Convert between RGB, HSL, Lab, Oklab, and more
- Face alignment - Facial landmark detection and alignment
- Perlin noise generation - Procedural texture generation
- Seam carving - Content-aware image resizing
- Feature distribution matching - Statistical color transfer
- White balance - Automatic color correction
- PCA - Principal Component Analysis with SIMD acceleration
- Color spaces - RGB, HSL, HSV, Lab, XYZ, Oklab, Oklch conversions
- Matrix operations - Linear algebra functions and SVD
- Geometry - Points, rectangles, transforms, convex hull
- Image processing - Resize, rotate, crop, blur, sharpen
- Canvas API - Lines, circles, polygons, Bézier curves with antialiasing
This library is used by Ameli for their makeup virtual try on.
First of all, this project would not have been possible without the existence of dlib. In fact, the first version of the virtual makeup try on was written in C++ with dlib and Emscripten. However, we decided to give Zig a go, even if that meant rewriting everything. As a result, we have no dependencies now.
Finally, B factory, Inc, which is my employer and graciously agreed to release this library to the public.