Obsah:
- Zásoby
- Krok 1: Inštalácia Pythonu a OpenCV
- Krok 2: Aké sú vlastnosti podobné Haaru?
- Krok 3: Kódovanie v Pythone
- Krok 4: Programovanie Arduina
- Krok 5: Záver
Video: Zariadenie na sledovanie tváre! Python a Arduino: 5 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:57
Od Techovator0819 Môj kanál YouTube Nasledovať viac od autora:
O: Rád robím nové veci. Rovnako ako veci zaoberajúce sa mikrořadičmi, strojárstvom, umelou inteligenciou, počítačovou vedou a všetkým, čo ma zaujíma. A tu nájdete všetky … Viac o Techovator0819 »
Zdravím všetkých, ktorí čítajú tento návod. Toto je zariadenie na sledovanie tváre, ktoré funguje v knižnici pythonu s názvom OpenCV. Skratka CV znamená „Computer Vision“. Potom som nastavil sériové rozhranie medzi počítačom a Arduino UNO. To znamená, že to nefunguje iba v Pythone.
Toto zariadenie rozpozná vašu tvár v rámčeku a potom pošle určité príkazy Arduinu na umiestnenie kamery tak, aby zostala vo vnútri snímky! To znie dobre? Vrhnime sa teda do toho.
Zásoby
1. Arduino UNO
2. 2 x servomotory (akékoľvek servomotory budú v poriadku, ale použil som Tower Pro SG90)
3. Inštalácia Pythonu
4. Inštalácia OpenCV
5. Webová kamera
Krok 1: Inštalácia Pythonu a OpenCV
Inštalácia Pythonu je celkom jednoduchá!
www.python.org/downloads/
Pomocou vyššie uvedeného odkazu si môžete stiahnuť verziu pythonu (Mac, Windows alebo Linux), ktorá vám najviac vyhovuje (64 bit alebo 32 bit). Zvyšok procesu inštalácie je jednoduchý a budete prevedení rozhraním.
Po dokončení inštalácie otvorte príkazový riadok a zadajte nasledujúci príkaz:
pip install opencv-python
To by malo nainštalovať knižnicu openCV. V prípade riešenia problémov môžete navštíviť TÚTO stránku.
Po nastavení prostredia a všetkých predpokladov sa pozrime, ako to môžeme skutočne vytvoriť!
Krok 2: Aké sú vlastnosti podobné Haaru?
Haarské funkcie sú vlastnosti digitálneho obrázku. Názov pochádza z Haarových vlniek. Jedná sa o rodinu štvorcových vĺn, ktoré sa používajú na identifikáciu znakov v digitálnom obrázku. Haar kaskády je v podstate klasifikátor, ktorý nám pomáha detegovať objekty (v našom prípade tváre) pomocou funkcií podobných haar.
V našom prípade na zjednodušenie použijeme na identifikáciu tvárí vopred vyškolené kaskády Haar. Môžete nasledovať TENTO odkaz na stránku github a stiahnuť si súbor xml pre Haar Cascade.
1. Kliknite na 'haarcascade_frontalface_alt.xml'
2. Kliknite na tlačidlo „Surové“v pravej hornej časti okna s kódom.
3. Presmeruje vás na inú stránku iba s textom.
4. Kliknite pravým tlačidlom myši a kliknite na položku Uložiť ako..
5. Uložte ho do rovnakého adresára alebo priečinka ako kód pythonu, o ktorom sa chystáte napísať.
Krok 3: Kódovanie v Pythone
import cv2
import numpy as np import serial serial import time
Dovážame všetky knižnice, ktoré potrebujeme.
ard = serial. Serial ("COM3", 9600)
Vytvoríme sériový objekt s názvom „ard“. Ako parametre uvádzame aj názov portu a prenosovú rýchlosť.
face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml')
Vytvárame ďalší objekt pre našu Haar Cascade. Zaistite, aby súbor HaarCascade zostal v rovnakom priečinku ako tento program python.
vid = cv2. VideoCapture (0)
Vytvoríme objekt, ktorý zachytáva video z webovej kamery. 0 ako parameter znamená prvú webovú kameru pripojenú k môjmu počítaču.
docs.opencv.org/2.4/modules/objdetect/doc/cascade_classification.html
kým je pravda:
_, frame = vid.read ()#prečíta aktuálny rámec do premenlivého rámca sivý = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) #konvertuje rámec -> obrázok v odtieňoch sivej#nasledujúci riadok detekuje tváre. #Prvý parameter je obrázok, na ktorom chcete zistiť #minSize = () určuje minimálnu veľkosť tváre v pixeloch #Kliknutím na odkaz vyššie získate ďalšie informácie o klasifikácii Cascade tváre = face_cascade.detectMultiScale (sivá, min. Veľkosť) = (80, 80), minSusedia = 3) #A pre slučku na detekciu tvárí. pre (x, y, w, h) v plochách: cv2.rectangle (rám, (x, y), (x+w, y+h), (255, 0, 0), 2)#nakreslí okolo seba obdĺžnik tvár Xpos = x+(w/2)#vypočíta súradnicu X stredu tváre. Ypos = y+(h/2) #vypočíta súradnicu Y stredu tváre, ak Xpos> 280: #Nasledujúce bloky kódu skontrolujú, či je tvár ard.write ('L'.encode ()) #on vľavo, vpravo, hore alebo dole vzhľadom na čas.spánok (0,01) #centrum rámca. elif Xpos 280: ard.write ('D'.encode ()) time.sleep (0,01) elif Ypos <200: ard.write (' U'.encode ()) time.sleep (0,01) else: ard.write ('S'.encode ()) time.sleep (0,01) break cv2.imshow (' frame ', frame)#Zobrazí rám v samostatnom okne. k = cv2.waitKey (1) & 0xFF, ak (k == ord ('q')): #ak je na klávesnici stlačené 'q', opustí cyklus while. prestávka
cv2.destroyAllWindows () #zavrie všetky okná
ard.close () #zatvára sériovú komunikáciu
vid.release () #prestane prijímať video z webovej kamery.
Krok 4: Programovanie Arduina
Neváhajte a upravte program podľa hardvérového nastavenia, ktoré vyhovuje vašim potrebám.
#zahrnúť
Servo servoX;
Servo servoY;
int x = 90;
int y = 90;
neplatné nastavenie () {
// sem vložte svoj inštalačný kód, aby sa spustil raz: Serial.begin (9600); servoX.attach (9); servoY.attach (10); servoX.write (x); servoY.write (y); oneskorenie (1000); }
char vstup = ""; // do tejto premennej je uložený sériový vstup
prázdna slučka () {
// sem vložte svoj hlavný kód, aby sa spúšťal opakovane: if (Serial.available ()) {// kontroluje, či sú v vstupe vyrovnávacej pamäte sériové údaje = Serial.read (); // číta údaje do premennej if (input == 'U') {servoY.write (y+1); // upraví uhol serva podľa vstupu y += 1; // aktualizuje hodnotu uhla} else if (input == 'D') {servoY.write (y-1); y -= 1; } else {servoY.write (y); } if (input == 'L') {servoX.write (x-1); x -= 1; } else if (vstup == 'R') {servoX.write (x+1); x += 1; } else {servoX.write (x); } vstup = ""; // vymaže premennú} // proces sa stále opakuje !!:)}
Krok 5: Záver
Toto je jeden pekný a interaktívny spôsob, pomocou ktorého môžete navrhnúť začlenenie programu Computer Vision do svojich projektov Arduino. Počítačové videnie je v skutočnosti celkom zábavné. A naozaj dúfam, že sa vám to páčilo. Ak áno, dajte mi vedieť v komentároch. A prihláste sa na odber môjho kanála youtube. Vopred ďakujem <3 <3
youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/videos
Odporúča:
Sledovanie tváre pomocou ARDUINO !!!: 7 krokov
Sledovanie tváre pomocou ARDUINO !!!: V predchádzajúcom návode som sa podelil o to, ako môžete komunikovať medzi Arduino a Python pomocou modulu „pyserial“a ovládať LED. Ak ste to nevideli, pozrite sa sem: KOMUNIKÁCIA MEDZI ARDUINO & PYTHON! A ako môžete rozpoznať farbu
ATtiny85 Nositeľné zariadenie na sledovanie vibrácií, sledovanie a programovanie ATtiny85 s Arduino Uno: 4 kroky (s obrázkami)
ATtiny85 Nositeľné hodinky na sledovanie vibrácií a programovanie ATtiny85 s Arduino Uno: Ako vyrobiť hodinky na sledovanie nositeľnej aktivity? Toto je nositeľný gadget navrhnutý tak, aby vibroval, keď zistí stagnáciu. Trávite väčšinu času pri počítači ako ja? Sedíte hodiny bez toho, aby ste si to uvedomovali? Potom je toto zariadenie
Sledovanie a sledovanie malých obchodov: 9 krokov (s obrázkami)
Track & trace pre malé obchody: Jedná sa o systém, ktorý je vytvorený pre malé obchody a ktorý sa má montovať na e-bicykle alebo e-skútre pri dodávkach na krátku vzdialenosť, napríklad v pekárni, ktorá chce dodávať pečivo. Čo znamená Track and Trace? Track and Trace je systém, ktorý používa približne
Pištoľ na sledovanie tváre: 4 kroky
Face Tracking Gun: Tento projekt je rozšírením projektu laserovej vypínacej drôtenej pištole zobrazeného tu-https://www.instructables.com/id/Building-a-Sentry-Gun-with-Laser-Trip-Wire-System-/ ? ALLSTEPS Jediným rozdielom je, že pištoľ sa nespustí laserom, ale
Inatel - SmartHome - SH2Y - Sledovanie systému a sledovanie okolitého prostredia: 6 krokov
Inatel - SmartHome - SH2Y - Sledovanie systému a okolité prostredie: Zobrazenie monitora a systém monitora a systému Ambiente " para Smart Homes, intuitívne monitorujúce aktuálny stav a teplotu "Temperatura", "Luminosidade" e " Senzor