Updated README

master
Sofus Albert Høgsbro Rose 2017-01-26 19:06:29 -05:00
parent 8f99b66c5b
commit f63828c2d3
Signed by: so-rose
GPG Key ID: 3D01BE95F3EFFEB9
2 changed files with 43 additions and 49 deletions

View File

@ -1,17 +1,46 @@
# openlut - Open-source tools for practical color management. # openlut - OSS tools for practical color management.
**Main development happens at https://git.sofusrose.com/so-rose/openlut - take a look! [![build status](https://git.sofusrose.com/so-rose/openlut/badges/master/build.svg)](https://git.sofusrose.com/so-rose/openlut/commits/master)
*Main development happens at https://git.sofusrose.com/so-rose/openlut - take a look!*
What is it? What is it?
----- -----
openlut is, at its core, a transform-focused color management library, accessible from **Python 3.5+**. It's built on my own color pipeline needs, which includes managing openlut is, at its core, a transform-focused **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. .
Lookup Tables, Gamma/Gamut functions/matrices, applying color transformations, etc. .
openlut is also a practical tool. Included soon will be a command line utility letting you perform complex color transformations from the comfort of openlut is also a practical tool. Included soon will be a command line utility letting you perform complex color transformations from the comfort of your console. Included already is an OpenGL image viewer, which might grow in the future to play sequences.
your console. Included already is an OpenGL image viewer, which might grow in the future to play sequences.
I wanted it to cover this niche simply and consistently, with batteries included (a library of gamma functions and color gamut matrices). I wanted it to cover this niche simply and consistently, with batteries included (a library of gamma functions and color gamut matrices).
Color management doesn't have to be so difficult!
Documentation
-----
Docs can be found at https://sofusrose.com/openlut. They're a work in progress for now (ColMap is 100% documented).
Installation
-----
1. **Get the dependencies!!!** The pip command will break without them.
* **On Debian/Ubuntu**: `sudo apt-get install python3-pip gcc libmagickwand-dev`
* **On Mac**: `brew install python3 gcc imagemagick`
* **All**: Make sure **pip**, **setuptools**, and **wheel** are installed. `pip3 install -U pip setuptools wheel`. It can cause errors if they aren't.
2. Run `pip3 install openlut` *(possibly sudo)*. This step **relies** on the successful installation of deps:
* **Python 3.5**: This is Python. You need Python.
* **gcc**: This is needed to compile the C++ extension.
* **imagemagick**: For all file IO. It's not like I was gonna write that myself :) .
*Linux: Ignore the AssertionError when building the wheel; it doesn't affect anything.*
Troubleshooting
-----
If python's installed but pip won't install, run `curl https://bootstrap.pypa.io/get-pip.py | python3`
No Windows support right now - it's the C++ module's fault.
Start an issue if something goes wrong with the library itself!
Misc. Systems need, generically:
* Python 3.5+
* Pip
* gcc (with c++14 and openmp support)
What About OpenColorIO? Why does this exist? What About OpenColorIO? Why does this exist?
@ -24,44 +53,9 @@ tools themselves as well - composing matrices, resizing LUTs, defining new gamma
In many ways, OCIO is a system stringing basic operations together. I'd be perfectly plausible to write an OCIO alternative with openlut in the backend. In many ways, OCIO is a system stringing basic operations together. I'd be perfectly plausible to write an OCIO alternative with openlut in the backend.
Documentation I Wanna Contribute!
----- ------
Docs can be found at https://sofusrose.com/openlut. They're a work in progress for now (ColMap is 100% documented). I'm honored! I could use help with:
* Feedback
Installation * Gamma Transfer Functions: The more "batteries" are included, the better!
----- * D65 XYZ-referenced color matrices (gamut definitions): See above.
First: **Ensure you have dependencies!!!** The pip command will break without them.
Simply use pip: `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.
* **imagemagick**: For all file IO. It's not like I was gonna write that myself :) .
*If it's breaking, try running `pip3 install -U pip setuptools`. Sometimes they are out of date.*
*Linux: You make need to use `sudo` before the command. Ignore the AssertionError when building the wheel; it doesn't affect anything.*
Installing Dependencies
-----
Not Difficult, I promise!
On Debian/Ubuntu: `sudo apt-get install python3-pip gcc libmagickwand-dev`
On Mac: `brew install python3 gcc imagemagick`
* You will need Homebrew ( copy/paste a command from http://brew.sh/ to install ) and XCode Command Line Tools for gcc (it should prompt you to install this).
* If this doesn't install pip, run `brew install python3; curl https://bootstrap.pypa.io/get-pip.py | python3`
On Other: You need **python 3.5**, pip, a newer version (must support C++14) of **gcc**.
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.

View File

@ -14,7 +14,7 @@ import pybind11
def read(fname): def read(fname):
return open(join(path.dirname(__file__), fname)).read() return open(join(path.dirname(__file__), fname)).read()
pypi_deps = ['numpy', 'wand', 'scipy', 'pygame','PyOpenGL', 'setuptools', 'pybind11'] pypi_deps = ['numpy', 'wand', 'scipy', 'pygame','PyOpenGL', 'setuptools', 'pybind11', 'wheel']
#Make sure we're using gcc. #Make sure we're using gcc.
os.environ["CC"] = "g++" os.environ["CC"] = "g++"