Obsah:

Zařízení pro sledování obličeje! Python a Arduino: 5 kroků
Zařízení pro sledování obličeje! Python a Arduino: 5 kroků

Video: Zařízení pro sledování obličeje! Python a Arduino: 5 kroků

Video: Zařízení pro sledování obličeje! Python a Arduino: 5 kroků
Video: Jetson Nano Custom Object Detection - how to train your own AI 2024, Červenec
Anonim
Image
Image
Zařízení pro sledování obličeje! Python a Arduino
Zařízení pro sledování obličeje! Python a Arduino
Zařízení pro sledování obličeje! Python a Arduino
Zařízení pro sledování obličeje! Python a Arduino

Od Techovator0819Můj kanál na YouTubeDalší od autora:

IoT: Počasí Box (s vlastními alarmy a časovači)
IoT: Počasí Box (s vlastními alarmy a časovači)
IoT: Počasí Box (s vlastními alarmy a časovači)
IoT: Počasí Box (s vlastními alarmy a časovači)
Multifunkční autonomní robot: 'Asset'
Multifunkční autonomní robot: 'Asset'
Multifunkční autonomní robot: 'Asset'
Multifunkční autonomní robot: 'Asset'

O: Miluji vytváření nových věcí. Jako věci zabývající se mikrořadiči, strojírenstvím, umělou inteligencí, počítačovou vědou a vším, co mě zajímá. A zde najdete všechny … Více o Techovator0819 »

Ahoj všichni, kdo čtete tento návod. Toto je zařízení pro sledování obličeje, které funguje na knihovně pythonu s názvem OpenCV. CV je zkratka pro 'Computer Vision'. Poté jsem nastavil sériové rozhraní mezi PC a Arduino UNO. To tedy znamená, že to nefunguje pouze na Pythonu.

Toto zařízení rozpozná váš obličej v rámečku a poté odešle určité příkazy do Arduina, aby umístil kameru tak, aby zůstala uvnitř rámečku! Zní to skvěle? Pojďme tedy do toho.

Zásoby

1. Arduino UNO

2. 2 x servomotory (Všechny servomotory budou v pořádku, ale použil jsem Tower Pro SG90)

3. Instalace Pythonu

4. Instalace OpenCV

5. Webová kamera

Krok 1: Instalace Pythonu a OpenCV

Instalace Pythonu je docela přímočará!

www.python.org/downloads/

Pomocí výše uvedeného odkazu si můžete stáhnout verzi pythonu (Mac, Windows nebo Linux), která vám nejlépe vyhovuje (64bitová nebo 32bitová verze). Zbytek procesu instalace je jednoduchý a budete provedeni rozhraním.

Po dokončení instalace otevřete příkazový řádek a zadejte následující:

pip install opencv-python

To by mělo nainstalovat knihovnu openCV. V případě řešení potíží se můžete podívat na TUTO stránku.

Poté, co jsme nastavili prostředí a všechny předpoklady, uvidíme, jak to vlastně můžeme vytvořit!

Krok 2: Jaké jsou vlastnosti podobné Haaru?

Haarské funkce jsou rysy digitálního obrazu. Název pochází z Haarových vlnek. Jedná se o rodinu čtvercových vln, které se používají k identifikaci rysů digitálního obrazu. Haar kaskády je v podstatě klasifikátor, který nám pomáhá detekovat objekty (v našem případě tváře) pomocí funkcí podobných haar.

V našem případě pro jednoduchost použijeme předem vyškolené Haar Cascade k identifikaci tváří. Můžete následovat TENTO odkaz na stránku github a stáhnout si xml soubor pro Haar Cascade.

1. Klikněte na 'haarcascade_frontalface_alt.xml'

2. Klikněte na tlačítko „Raw“v pravé horní části okna kódu.

3. Přesměruje vás na jinou stránku pouze s textem.

4. Klikněte pravým tlačítkem a klikněte na „Uložit jako …“

5. Uložte jej do stejného adresáře nebo složky jako kód pythonu, o kterém se chystáte napsat.

Krok 3: Kódování v Pythonu

importovat cv2

import numpy as np doba importu sériového importu

Importujeme všechny knihovny, které potřebujeme.

ard = serial. Serial ("COM3", 9600)

Vytváříme sériový objekt s názvem 'ard'. Jako parametry zadáváme také Název portu a BaudRate.

face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml')

Vytváříme další objekt pro naši Haar Cascade. Ujistěte se, že soubor HaarCascade zůstane ve stejné složce jako tento program python.

vid = cv2. VideoCapture (0)

Vytvoříme objekt, který zachytí video z webové kamery. 0 jako parametr znamená první webovou kameru připojenou k mému počítači.

docs.opencv.org/2.4/modules/objdetect/doc/cascade_classification.html

zatímco pravda:

_, frame = vid.read ()#načte aktuální snímek do proměnného rámce grey = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY)#převede snímek -> obrázek ve stupních šedi#následující řádek detekuje tváře. #First parameter is the image on which you want to detect on #minSize = () specifies the minimum size of the face in points of Pixels #Click the above link to get more about the Cascade Classification faces = face_cascade.detectMultiScale (grey, minSize = (80, 80), minNeighbors = 3) #A pro smyčku pro detekci tváří. for (x, y, w, h) in faces: cv2.rectangle (frame, (x, y), (x+w, y+h), (255, 0, 0), 2) #draws a squarele around obličej Xpos = x+(w/2)#vypočítá souřadnici X středu obličeje. Ypos = y+(h/2) #vypočítá souřadnici Y středu obličeje, pokud Xpos> 280: #Následující bloky kódu kontrolují, zda je obličej ard.write ('L'.encode ()) #on vlevo, vpravo, nahoře nebo dole vzhledem k času. spánek (0,01) #střed rámečku. 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ámeček v samostatném okně. k = cv2.waitKey (1) & 0xFF, pokud (k == ord ('q')): #if 'q' je stisknuto na klávesnici, opustí smyčku while. přestávka

cv2.destroyAllWindows () #zavře všechna okna

ard.close () #zavře sériovou komunikaci

vid.release () #přestává přijímat video z webové kamery.

Krok 4: Programování Arduina

Nebojte se upravit program podle nastavení hardwaru, které vyhovuje vašim potřebám.

#zahrnout

Servo servoX;

Servo servoY;

int x = 90;

int y = 90;

neplatné nastavení () {

// sem vložte instalační kód, aby se spustil jednou: Serial.begin (9600); servoX.attach (9); servoY.attach (10); servoX.write (x); servoY.write (y); zpoždění (1000); }

char vstup = ""; // do této proměnné je uložen sériový vstup

prázdná smyčka () {

// sem vložte svůj hlavní kód, aby se spustil opakovaně: if (Serial.available ()) {// kontroluje, zda jsou nějaká data v sériovém bufferu input = Serial.read (); // čte data do proměnné if (input == 'U') {servoY.write (y+1); // upraví úhel serva podle vstupu y += 1; // aktualizuje hodnotu úhlu} 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); } input = ""; // vymaže proměnnou} // proces se stále opakuje !!:)}

Krok 5: Závěr

Toto je jeden pěkný a interaktivní způsob, pomocí kterého můžete navrhnout začlenění počítačové vize do svých projektů Arduino. Computer Vision je vlastně docela zábava. A opravdu doufám, že se vám to líbilo. Pokud ano, dejte mi vědět v komentářích. A přihlaste se k odběru mého youtube kanálu. Předem děkuji <3 <3

youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/videos

Doporučuje: