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