controlling brightness by hand detection

import cv2

import mediapipe as mp

from math import hypot

import screen_brightness_control as sbc

import numpy as np

mpHands = mp.solutions.hands

hands = mpHands.Hands(

static_image_mode=False,

model_complexity=1,

min_detection_confidence=0.75,

min_tracking_confidence=0.75,

max_num_hands=2)

Draw = mp.solutions.drawing_utils

cap = cv2.VideoCapture(0)

while True:

_, frame = cap.read()

frame = cv2.flip(frame, 1)

frameRGB = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)

Process = hands.process(frameRGB)

landmarkList = []

if Process.multi_hand_landmarks:

for handlm in Process.multi_hand_landmarks:

for _id, landmarks in enumerate(handlm.landmark):

height, width, color_channels = frame.shape

x, y = int(landmarks.x*width), int(landmarks.y*height)

landmarkList.append([_id, x, y])

Draw.draw_landmarks(frame, handlm,

mpHands.HAND_CONNECTIONS)

if landmarkList != []:

x_1, y_1 = landmarkList[4][1], landmarkList[4][2]

x_2, y_2 = landmarkList[8][1], landmarkList[8][2]

cv2.circle(frame, (x_1, y_1), 7, (0, 255, 0), cv2.FILLED)

cv2.circle(frame, (x_2, y_2), 7, (0, 255, 0), cv2.FILLED)

cv2.line(frame, (x_1, y_1), (x_2, y_2), (0, 255, 0), 3)

L = hypot(x_2-x_1, y_2-y_1)

b_level = np.interp(L, [15, 220], [0, 100])

sbc.set_brightness(int(b_level))

cv2.imshow('Image', frame)

if cv2.waitKey(1) & 0xff == ord('q'):

break


No comments: