|
-bosqich - qo'l tasviriga qo'l belgilarini va qo'l ulanishlarini chizish
|
bet | 3/4 | Sana | 26.11.2023 | Hajmi | 0,74 Mb. | | #105655 |
Bog'liq Machine learning 2-amaliy4-bosqich - qo'l tasviriga qo'l belgilarini va qo'l ulanishlarini chizish
Yuqoridagi kodda biz qo'l nuqtasi raqamini aylantiramiz 20. Bu pushti barmoqning uchi.
O'zingiz aylantirmoqchi bo'lgan qo'l nuqtasi raqamidan foydalaning, chunki ular qo'l belgisi diagrammasida keltirilgan. Keyin kiritilgan rasmga qo'l belgilarini va ular orasidagi bog'lanishlarni chizamiz.
5-qadam - Chiqishni ko'rsatish
Biz yuqoridagi kodni foydalanuvchiga ko'rsatish uchun foydalanamiz. Chiqish foydalanuvchining real vaqtdagi videosidir. Unda foydalanuvchining qo'llari kuzatilgan, qo'l belgilari va qo'llarda chizilgan ulanishlar mavjud.
Natijalar
Dastur va modulning chiqishi bir xil bo'ladi. Ularning har biri xatosiz tugallanganda, natija quyida ko'rsatilgandek bo'ladi:
Xulosa
Endi siz qo'lni kuzatishni amalga oshiradigan dastur yaratish uchun zarur bo'lgan barcha ko'nikmalarni tushunasiz va egasiz. Shuningdek, siz kodni modulga aylantirish uchun zarur bo'lgan ko'nikmalarga egasiz.
Davom eting va modulni Pythonqo'lda kuzatishni talab qiladigan har qanday loyihaga import qiling va modul o'z sehrini bajarishini tomosha qiling.
Iloha dastur kodi
import cv2
import mediapipe as mp
from math import hypot
from ctypes import cast, POINTER
from comtypes import CLSCTX_ALL
from pycaw.pycaw import AudioUtilities, IAudioEndpointVolume
import numpy as np
cap = cv2.VideoCapture(0)
mpHands = mp.solutions.hands
hands = mpHands.Hands()
mpDraw = mp.solutions.drawing_utils
devices = AudioUtilities.GetSpeakers()
interface = devices.Activate(IAudioEndpointVolume._iid_, CLSCTX_ALL, None)
volume = cast(interface, POINTER(IAudioEndpointVolume))
volMin, volMax = volume.GetVolumeRange()[:2]
while True:
success, img = cap.read()
imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
results = hands.process(imgRGB)
lmList = []
if results.multi_hand_landmarks:
for handlandmark in results.multi_hand_landmarks:
for id, lm in enumerate(handlandmark.landmark):
h, w, c = img.shape
cx, cy = int(lm.x * w), int(lm.y * h)
lmList.append([id, cx, cy])
mpDraw.draw_landmarks(img, handlandmark, mpHands.HAND_CONNECTIONS)
if lmList != []:
x1, y1 = lmList[4][1], lmList[4][2]
x2, y2 = lmList[8][1], lmList[8][2]
cv2.circle(img, (x1, y1), 15, (255, 0, 0), cv2.FILLED)
cv2.circle(img, (x2, y2), 15, (255, 0, 0), cv2.FILLED)
cv2.line(img, (x1, y1), (x2, y2), (255, 0, 0), 3)
length = hypot(x2 - x1, y2 - y1)
vol = np.interp(length, [15, 220], [volMin, volMax])
print(vol, length)
volume.SetMasterVolumeLevel(vol, None)
cv2.imshow('Image', img)
if cv2.waitKey(1) & 0xff == ord('q'):
break
|
| |