Search code examples
pythonopencvnumpyimage-processing

How to fast change image brightness with python + OpenCV?


I have a sequence of images. I need to average brightness of these images.

First example (very slow):

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)

Second example (quickly)

hsv += value

This example very fast but it changes all values HSV (I need to change only V (brightness))


Solution

  • Slice to select just the third channel and then modify those elements -

    hsv[:,:,2] += value