У меня есть массив 3D numpy, представляющий изображение в цветовом пространстве HSV (форма = (h = 1000, w = 3000, 3)).
Последнее измерение изображения - [H, S, V]. Я хочу вычесть 20 из канала H из всех пикселей, если значение пикселя> 20, но оставить S и V без изменений. Я написал следующую векторизованную функцию:
def sub20(x):
# x is a array in the format [H,S, V]
return np.uint8([H-20, S, V])
vec= np.vectorize(sub20, otypes=[np.uint8],signature="(i)->(i)")
img2= vec(img1)
Что делает эта векторизованная функция, так это принимает последнее измерение изображения [H, S, V] и выводит [H-20, S, V]. знать, как заставить его вычитать 20, если H больше 20. Это также занимает 1 минуту. Я хочу, чтобы скрипт принимал веб-канал в режиме реального времени. Есть ли способ сделать это быстрее?
Спасибо