Mam sekwencję obrazów. Potrzebuję średniej jasności tych obrazów.Jak szybko zmienić jasność obrazu za pomocą pythona + OpenCV?
Pierwszy przykład (bardzo wolno):
img = cv2.imread('test.jpg') #load rgb image
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) #convert it to hsv
for x in range(0, len(hsv)):
for y in range(0, len(hsv[0])):
hsv[x, y][2] += value
img = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)
cv2.imwrite("image_processed.jpg", img)
Drugi przykład (szybko)
hsv += value
Ten przykład bardzo szybko, ale to zmienia wszystkie wartości HSV (muszę tylko zmienić V (jasność))
nie działa. Daje dziwny obraz jako wyjście po zwiększeniu jasności. –
@GauravRaj Może się pojawić przepełnienie. Jeśli tak, być może trzeba użyć wycinania: ['numpy.clip'] (https://docs.scipy.org/doc/numpy/reference/generated/numpy.clip.html). Pamiętaj też, że działa to po stronie HSV. Tak więc musisz wykonać te RGB do HSV i cofnąć konwersje. – Divakar
Tak, zrobiłem to wszystko. BGR do HSV, Następnie hsv [:,:, 2] + = 50, Następnie np.clip, wreszcie HSV do BGR. Wciąż nie ma szczęścia. –