Sofus Albert Høgsbro Rose 59f42a2622 | ||
---|---|---|
doc | ||
img_test | ||
openlut | ||
tests | ||
.gitattributes | ||
.gitignore | ||
.pypirc | ||
.venv | ||
MANIFEST.in | ||
README.md | ||
main.py | ||
openlut-project | ||
requirements.txt | ||
setup.py |
README.md
openlut
Open-source tools for practical color management.
What is it?
openlut is, at its core, a color management library, accessible from Python 3.5+. It's built on my own color pipeline needs, which includes managing Lookup Tables, Gamma/Gamut functions/matrices, applying color transformations, etc. .
openlut is also a tool. Included soon will be a command line utility letting you perform complex color transformations from the comfort of your console. In all cases, interactive usage from a Python console is easy.
I wanted it to cover this niche simply and consistently, something color management often isn't! Take a look; hopefully you'll agree :) !
What About OpenColorIO? Why does this exist?
OpenColorIO is a wonderful library, but seems geared towards managing the complexity of many larger applications in a greater pipeline. openlut is more simple; it doesn't care about the big picture - you just do consistent operations on images. openlut also has tools to deal with these building blocks, unlike OCIO - resizing LUTs, etc. .
Indeed, OCIO is just a system these basic operations using LUTs - in somewhat unintuitive ways, in my opinion. You could setup a similar system using openlut's toolkit.
Installation
Simply use pip: sudo pip3 install openlut
(pip3 denotes that you must use a Python 3 version of pip). Keep in mind, there are some external dependencies:
- Python 3.5: This is Python; you need Python.
- gcc: This is needed to compile the C++ extensions.
- pybind11: This is a library needed to link the C++ extension into Python. pip version is being difficult...
- imagemagick: For all file IO. It's not like I was gonna write that myself :) .
If it's breaking, try running sudo pip3 install -U pip setuptools
. Sometimes they are out of date.
Installing Dependencies
Not Difficult, I promise!
On Debian/Ubuntu: sudo apt-get install python3-pip gcc pybind11-dev libmagickwand-dev
On Mac: brew install python3 gcc pybind11 imagemagick
- You will need Homebrew ( copy/paste a command from http://brew.sh/ ) and XCode Command Line Tools for gcc (it should prompt you to install this).
- Disclaimer - gcc took its sweet time compiling/installing on my old Mac...
Dependencies
There are some dependencies that you must get. Keep in mind that it's Python 3.X only; all dependencies must be their 3.X versions.
Getting python3 and pip3
If you're on a Mac, run this to get python3 and pip3: brew install python3; curl https://bootstrap.pypa.io/get-pip.py | python3
If you're on Linux, you should already have python3 and pip3 - otherwise see your distribution repositories.
Dependency Installation
You need Python 3.5, Pip, a newer version (must support C++14) of gcc, and pybind11 in your includes
. This is trivial on Debian/Ubuntu:
- `sudo apt-get install python3-pip
Basic Library Usage
To represent images, use a ColMap object. This handles IO to/from all ImageMagick supported formats (including EXR and DPX), as well as storing the image data.
Use any child of the Transform class to do a color transform on a ColMap, using ColMap's apply(Transform)
method.
The Transform objects themselves have plenty of features - like LUT, with open()
, save()
, and resize()
methods, or TransMat with auto-combining
input matrices, or automatic spline-based interpolation of very small 1D LUTs - to make them helpful in and of themselves!
Take a look at the test code under tests for examples.