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