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()