# imageproc
[](https://crates.io/crates/imageproc)
[![doc-badge]][doc-link]
[](https://github.com/image-rs/imageproc/blob/master/LICENSE)
[](https://deps.rs/repo/github/image-rs/imageproc)
An image processing library, based on the
[`image`](https://github.com/image-rs/image) library.
[API documentation][doc-link]
[doc-badge]: https://docs.rs/imageproc/badge.svg
[doc-link]: https://docs.rs/imageproc
## Goals
A performant, well-tested, well-documented library with a consistent API, suitable for use as
the basis of computer vision applications or graphics editors.
## Non-goals
Maximum genericity over image storages or formats, or support for higher-dimensional images.
## Color Space
Functions in this library implicitly assume that pixels colors are
stored in a linear color space like `RGB` as opposed to a non-linear color
space such as `sRGB`.
If you are not familiar with gamma correction then [this article] contains
an introduction and examples of color artefacts resulting
from not using linear color spaces.
[this article]: https://blog.johnnovak.net/2016/09/21/what-every-coder-should-know-about-gamma/
## Parallelism
This library provides both single-threaded and multi-threaded variations of several functions
by using [rayon](https://github.com/rayon-rs/rayon).
Depending on image size and the amount of work performed per pixel the parallel versions may not
always be faster - we recommend benchmarking for your specific use-case.
## Crate Features
### Default Features
- `rayon`: enables multi-threaded versions of several functions
- `text`: enables text drawing
- `fft`: enables `phash` and other functions that depends on the `rustfft` crate
### Optional Features
- `display-window`: enables `sdl2`
- `sdl2`: enables the displaying of images (using `imageproc::window`) with
[sdl2](https://github.com/Rust-SDL2/rust-sdl2)
## How to contribute
See [CONTRIBUTING.md](CONTRIBUTING.md).