Вы можете использовать функции OpenCV add
или subtract
(дополнительное объяснение здесь ).
>>> import numpy as np
>>> import cv2
>>> arr = np.array([100, 250, 255], dtype=np.uint8)
>>> arr
Out[1]: array([100, 250, 255], dtype=uint8)
>>> cv2.add(arr, 10, arr) # Inplace
Out[2]: array([110, 255, 255], dtype=uint8) # Saturated!
>>> cv2.subtract(arr, 150, arr)
Out[3]: array([ 0, 105, 105], dtype=uint8) # Truncated!
К сожалению, невозможно использовать индексы для выходного массива, поэтому вычисления на месте для каждого канала изображения могут выполняться менее эффективным способом:
arr[..., channel] = cv2.add(arr[..., channel], 40)