Untitled
unknown
python
3 years ago
2.6 kB
18
Indexable
import cv2
import mediapipe as mp
import time
cap = cv2.VideoCapture(0) #wybieranie kamery w laptoku
mpHands = mp.solutions.hands
hands = mpHands.Hands()
mpDraw = mp.solutions.drawing_utils
pTime = 0 #previous time
cTime = 0 #current time
while True:
success, img = cap.read()
img = cv2.flip(img, 1)
imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
results = hands.process(imgRGB)
# print(results.multi_hand_landmarks)
if results.multi_hand_landmarks:
for handLms in results.multi_hand_landmarks: # handLms = landmarks
for id, lm in enumerate(handLms.landmark):
# print(id, lm)
h, w, c = img.shape # height, width, channels
cx, cy = int(lm.x*w), int(lm.y*h)
# print(id, cx, cy)
if id == 20:
cv2.circle(img, (cx, cy), 10, (0,255,0), cv2.FILLED)
cv2.circle(img, (cx, cy), 6, (0,0,255), cv2.FILLED)
if id == 16:
cv2.circle(img, (cx, cy), 10, (0,255,0), cv2.FILLED)
cv2.circle(img, (cx, cy), 6, (0,0,255), cv2.FILLED)
if id == 12:
cv2.circle(img, (cx, cy), 10, (0,255,0), cv2.FILLED)
cv2.circle(img, (cx, cy), 6, (0,0,255), cv2.FILLED)
if id == 8:
cv2.circle(img, (cx, cy), 10, (0,255,0), cv2.FILLED)
cv2.circle(img, (cx, cy), 6, (0,0,255), cv2.FILLED)
if id == 4:
cv2.circle(img, (cx, cy), 10, (0,255,0), cv2.FILLED)
cv2.circle(img, (cx, cy), 6, (0,0,255), cv2.FILLED)
mpDraw.draw_landmarks(
img, handLms, mpHands.HAND_CONNECTIONS,
landmark_drawing_spec = mpDraw.DrawingSpec(color=(0,0,255), thickness=2, circle_radius=2), # ustawienia dwudziestu kropek
connection_drawing_spec = mpDraw.DrawingSpec(color=(0,255,0), thickness=2, circle_radius=2) # ustawienia linii
)
cTime = time.time()
fps = 1/(cTime-pTime)
pTime = cTime
cv2.putText(img,
f'fps:{str(int(fps))}',
(10, 70),
cv2.FONT_HERSHEY_PLAIN,
3,
(0, 0, 0),
3,
)
cv2.imshow("Image", img)
if cv2.waitKey(1) == 27: #27 czyli przycisk escape
break
cap.release()
cv2.destroyAllWindows()Editor is loading...