实时降低亮度 OpenCv Python

Reduce brigthness in real time OpenCv Python

我正在寻找如何降低网络摄像头图像的亮度。 你能告诉我怎么做吗?

我找不到任何东西...

为了增加我使用此功能的值(我使用轨迹栏增加亮度):

def change_brightness(frame, value):
    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
    h, s, v = cv2.split(hsv)

    lim = 255 - value
    v[v > lim] = 255
    v[v <= lim] += value

    final_hsv = cv2.merge((h, s, v))
    img = cv2.cvtColor(final_hsv, cv2.COLOR_HSV2BGR)
    return img

这是完整代码:

cv2.namedWindow("VIDEO")
#cv2.createTrackbar("alpha", "VIDEO", 0, 4, nothing)
cv2.createTrackbar("gamma", "VIDEO", 50, 100, nothing)
while True:
        k = cv2.waitKey(1)
        _, frame = video.read()
        frame = cv2.resize(frame, FRAME_DIM)  # frame contiene l'immagine della webcam
        frame = cv2.flip(frame, 1) # giro orizzontalmente (parametro = 1) l'immagine

        #test = cv2.getTrackbarPos("alpha", "VIDEO")
        test = cv2.getTrackbarPos("gamma", "VIDEO")
        
        gamma = cv2.getTrackbarPos("gamma", "VIDEO")
        frame = change_brightness(frame, gamma)
        if (k % 256 == ord("q")):  # PATH, folder_name, full_path, IMG_LABELquando premo "q" si chiude la webcam e la relativa finestra
            cv2.destroyAllWindows()
            break
        camera = cv2.imshow("VIDEO", frame)

这似乎可行;本质是滑块从 0 到 510,因此您减去一个偏移量以获得要添加 减去 HSV 的 'v' 值的值。原始代码使用巧妙的技巧轻松遍历图像的所有元素以增加亮度;重复该技巧以减去值。例如,如果你减去 -10 的亮度,任何低于 10 的都为零;否则,减去。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Sun Feb  6 18:06:51 2022


"""
import cv2


def change_brightness(frame, value):
    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
    h, s, v = cv2.split(hsv)

    # increase brightness; input value is 1 to 255
    if(value>0):
        lim_upper = 255 - value
        # If v>lim, then set to 255
        v[v > lim_upper] = 255
        # if v<lim, then add
        v[v <= lim_upper] += value
    # decrease brightness; input value from 0 to -255
    else:
        lim_lower = -value
        v[v < lim_lower] = 0
        v[v >= lim_lower] -= -value
    
    final_hsv = cv2.merge((h, s, v))
    img = cv2.cvtColor(final_hsv, cv2.COLOR_HSV2BGR)
    return img

# Read from video camera
video_capture_device_index = 0
webcam = cv2.VideoCapture(video_capture_device_index)
cv2.namedWindow("VIDEO")
cv2.createTrackbar("gamma", "VIDEO", 255, 510,(lambda a: None))

while True: 
        ret, frame = webcam.read()
        k = cv2.waitKey(1)
        # flip horizontally (mirror)
        frame = cv2.flip(frame, 1) # giro orizzontalmente (parametro = 1) l'immagine

        
        # varies from 0-510, so subtract so range is -255 to 255
        gamma = cv2.getTrackbarPos("gamma", "VIDEO")
        gamma = gamma - 255

        
        frame = change_brightness(frame, gamma)
        # Use q to quit
        if (k == ord("q")):  # PATH, folder_name, full_path, IMG_LABELquando premo "q" si chiude la webcam e la relativa finestra
            cv2.destroyAllWindows()
            break
        
        camera = cv2.imshow("VIDEO", frame)

webcam.release()
print("end video.")