23 lines
678 B
Python
23 lines
678 B
Python
import numpy as np
|
|
|
|
|
|
def blackwhite(clip, RGB = None, preserve_luminosity=True):
|
|
""" Desaturates the picture, makes it black and white.
|
|
Parameter RGB allows to set weights for the different color
|
|
channels.
|
|
If RBG is 'CRT_phosphor' a special set of values is used.
|
|
preserve_luminosity maintains the sum of RGB to 1."""
|
|
if RGB is None:
|
|
RGB = [1,1,1]
|
|
|
|
if RGB == 'CRT_phosphor':
|
|
RGB = [0.2125, 0.7154, 0.0721]
|
|
|
|
R,G,B = 1.0*np.array(RGB)/ (sum(RGB) if preserve_luminosity else 1)
|
|
|
|
def fl(im):
|
|
im = (R*im[:,:,0] + G*im[:,:,1] + B*im[:,:,2])
|
|
return np.dstack(3*[im]).astype('uint8')
|
|
|
|
return clip.fl_image(fl)
|