Help please. Cod don't open
import cv2
import mediapipe as mp
import time
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ Π²ΠΈΠ΄Π΅ΠΎ Π·Π°Ρ Π²Π°Ρ
cap = cv2.VideoCapture(0)
if not cap.isOpened():
print("ΠΡΠΈΠ±ΠΊΠ°: Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ ΠΎΡΠΊΡΡΡΡ ΠΊΠ°ΠΌΠ΅ΡΡ.")
exit()
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ ΠΌΠΎΠ΄ΡΠ»Ρ Hands ΠΈΠ· MediaPipe
mp_hands = mp.solutions.hands
hands = mp_hands.Hands(static_image_mode=False, max_num_hands=2, min_detection_confidence=0.5, min_tracking_confidence=0.5)
mp_draw = mp.solutions.drawing_utils
pTime = 0 # ΠΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π΄Π»Ρ FPS ΡΠ°ΡΡΠ΅ΡΠ°
while True:
success, img = cap.read()
if not success:
print("ΠΠ΅ ΡΠ΄Π°Π»ΠΎΡΡ ΡΡΠΈΡΠ°ΡΡ ΠΊΠ°Π΄Ρ Ρ ΠΊΠ°ΠΌΠ΅ΡΡ.")
break
# ΠΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ ΡΠ°Π·ΠΌΡΡΠΈΠ΅ Π΄Π»Ρ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΡ ΡΡΠΌΠΎΠ²
img = cv2.GaussianBlur(img, (5, 5), 0)
# ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² RGB
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
results = hands.process(img_rgb)
# ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, Π½Π°ΠΉΠ΄Π΅Π½Ρ Π»ΠΈ ΡΡΠΊΠΈ
if results.multi_hand_landmarks:
for handLms in results.multi_hand_landmarks:
# ΠΡΠΎΡ
ΠΎΠ΄ΠΈΠΌ ΠΏΠΎ ΡΠΎΡΠΊΠ°ΠΌ (landmarks)
for id, lm in enumerate(handLms.landmark):
h, w, c = img.shape # ΠΡΡΠΎΡΠ°, ΡΠΈΡΠΈΠ½Π°, ΠΊΠ°Π½Π°Π»Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
cx, cy = int(lm.x * w), int(lm.y * h) # ΠΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΠΎΡΠΊΠΈ
# ΠΡΠΌΠ΅ΡΠ°Π΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΠΎΡΠΊΠΈ
if id == 0: # ΠΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅ Π»Π°Π΄ΠΎΠ½ΠΈ
cv2.circle(img, (cx, cy), 10, (255, 0, 255), cv2.FILLED)
# ΠΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΡΠΊΠ°ΠΌΠΈ
mp_draw.draw_landmarks(img, handLms, mp_hands.HAND_CONNECTIONS)
# Π Π°ΡΡΡΠΈΡΡΠ²Π°Π΅ΠΌ ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌ FPS
cTime = time.time()
fps = 1 / max((cTime - pTime), 1e-6) # ΠΠ°ΡΠΈΡΠ° ΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡ Π½Π° 0
pTime = cTime
cv2.putText(img, f'FPS: {int(fps)}', (10, 70),
cv2.FONT_HERSHEY_PLAIN, 3, (255, 0, 255), 3)
# ΠΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
cv2.imshow("Image", img)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
ΠΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅ΠΌ ΡΠ΅ΡΡΡΡΡ
hands.close() # ΠΠ°ΠΊΡΡΠ²Π°Π΅ΠΌ MediaPipe Hands
cap.release()
cv2.destroyAllWindows()