I am writing a tool for Houdini that can create, save and apply color themes to color ramp parameters. In this project I needed to convert between color spaces. There are many ways to do this, but this led me to start exploring OCIO using Python. Below is a snippet that changes the color space of a list of rgb values from srgb to linear srgb.
- First I activate the venv into which I want to install OCIO
- Then I run pip install opencolorio
- With the package installed make sure that your IDE can access the package
- We also need to download a OCIO configuration file from here
import os
import PyOpenColorIO as OCIO
def apply_rgb(rgb, src_space, dst_space):
try:
config = OCIO.GetCurrentConfig()
processor = config.getProcessor(src_space, dst_space);
cpu = processor.getDefaultCPUProcessor()
return cpu.applyRGB(rgb)
except Exception as e:
print("OpenColorIO Error: ", e)
os.environ["OCIO"] = 'C:/Users/Johan/Desktop/OpenColorIO-Configs-master/aces_1.0.3/config.ocio'
def print_color_spaces():
config = OCIO.GetCurrentConfig()
colorSpaceNames = [ cs.getName() for cs in config.getColorSpaces() ]
print('\n'.join(c for c in colorSpaceNames))
val = apply_rgb( rgb=[.75, .5, .25],
src_space='Input - Generic - sRGB - Texture',
dst_space='Utility - Linear - sRGB')
print(val)
# print_color_spaces()