Arckövető eszköz! Python és Arduino: 5 lépés
Arckövető eszköz! Python és Arduino: 5 lépés
Anonim
Image
Image
Arckövető eszköz! Python és Arduino
Arckövető eszköz! Python és Arduino
Arckövető eszköz! Python és Arduino
Arckövető eszköz! Python és Arduino

Szerző: Techovator0819Youtube Channel

IoT: Weather Box (egyedi riasztásokkal és időzítőkkel)
IoT: Weather Box (egyedi riasztásokkal és időzítőkkel)
IoT: Weather Box (egyedi riasztásokkal és időzítőkkel)
IoT: Weather Box (egyedi riasztásokkal és időzítőkkel)
A többfunkciós autonóm robot: "Asset"
A többfunkciós autonóm robot: "Asset"
A többfunkciós autonóm robot: "Asset"
A többfunkciós autonóm robot: "Asset"

Névjegy: Csak szeretek új dolgokat alkotni. Mint például a mikrovezérlőkkel, a gépiparral, a mesterséges intelligenciával, a számítástechnikával és bármi mással foglalkozó dolgok. És itt megtalálja az összes… Tovább a Techovator0819 -ről »

Üdv mindenkinek, aki ezt az oktatóanyagot olvassa. Ez egy arckövető eszköz, amely az OpenCV nevű python könyvtáron működik. A CV jelentése „Computer Vision”. Ezután soros interfészt állítottam be a számítógépem és az Arduino UNO között. Ez azt jelenti, hogy ez nem csak a Pythonon működik.

Ez az eszköz felismeri az arcodat a keretben, majd bizonyos parancsokat küld az Arduino -nak, hogy helyezze el a kamerát úgy, hogy a keretben maradjon! Jól hangzik? Akkor ugorjunk bele.

Kellékek

1. Arduino UNO

2. 2 x szervomotor (minden szervomotor rendben lesz, de a Tower Pro SG90 -et használtam)

3. A Python telepítése

4. Az OpenCV telepítése

5. Webkamera

1. lépés: A Python és az OpenCV telepítése

A Python telepítése nagyon egyszerű!

www.python.org/downloads/

A fenti linkre kattintva letöltheti az Önnek leginkább megfelelő (64 vagy 32 bites) python verziót (Mac, Windows vagy Linux). A telepítési folyamat többi része egyszerű, és az interfész végigvezeti Önt.

A telepítés befejezése után nyissa meg a parancssort, és írja be a következőt:

pip telepítse az opencv-python programot

Ennek telepítenie kell az openCV könyvtárat. Hibaelhárítás esetén EZT az oldalt nézheti meg.

A környezet és az összes előfeltétel beállítása után nézzük meg, hogyan is építhetjük ezt fel!

2. lépés: Mik a Haar-szerű funkciók?

Haar-szerű funkciók a digitális kép jellemzői. A név a Haar wavelets -ből származik. Ezek négyzet alakú hullámok családja, amelyeket a digitális kép jellemzőinek azonosítására használnak. A Haar kaszkádok alapvetően egy osztályozó, amely segít a tárgyak (esetünkben az arcok) észlelésében a haar-szerű funkciók segítségével.

A mi esetünkben az egyszerűség kedvéért előre képzett Haar Cascades-t használunk az arcok azonosítására. Kövesse a github oldal EZT hivatkozását, és töltse le a Haar Cascade xml fájlját.

1. Kattintson a "haarcascade_frontalface_alt.xml" elemre

2. Kattintson a "Nyers" gombra a kódablak jobb felső részén.

3. Egy másik oldalra irányít, ahol csak szöveg található.

4. Kattintson a jobb egérgombbal, és kattintson a "Mentés másként" gombra.

5. Mentse el ugyanabba a könyvtárba vagy mappába, mint az írni kívánt python kód.

3. lépés: Kódolás Pythonban

import cv2

import numpy import np import soros importálási idő

Az összes szükséges könyvtárat importáljuk.

ard = soros. Soros ("COM3", 9600)

Létrehozunk egy soros objektumot, melynek neve 'ard'. Paraméterként megadjuk a port nevét és a BaudRate -et is.

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

Létrehozunk egy másik objektumot a Haar Cascade számára. Győződjön meg arról, hogy a HaarCascade fájl ugyanabban a mappában marad, mint ez a python program.

vid = cv2. VideoCapture (0)

Létrehozunk egy objektumot, amely rögzíti a webkameráról a videót. A 0 paraméter a számítógéphez csatlakoztatott első webkamerát jelenti.

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

míg igaz:

_, frame = vid.read ()#beolvassa az aktuális keretet a szürke = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY)#keretbe -> szürkeárnyalatos kép#a következő sor érzékeli az arcokat. #Az első paraméter az a kép, amelyen észlelni szeretné a #minSize = () paramétert, amely meghatározza az arc minimális méretét pixelben kifejezve. #Kattintson a fenti linkre, ha többet szeretne megtudni a Cascade Classification arcokról = face_cascade.detectMultiScale (szürke, minSize = (80, 80), minSzomszédok = 3) #A a ciklushoz az arcok észleléséhez. (x, y, w, h) esetén arcokban: cv2. téglalap (keret, (x, y), (x+w, y+h), (255, 0, 0), 2) az arc Xpos = x+(w/2)#kiszámítja az arc középpontjának X koordinátáját. Ypos = y+(h/2) #kiszámítja az arc középpontjának Y koordinátáját, ha Xpos> 280: #A következő kódblokkok ellenőrzik, hogy az arc ard.write ('L'.encode ()) #on a bal, jobb, felül vagy alul az idő tekintetében.alvás (0.01) #közepén a keret. 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) #megjeleníti a keretet egy külön ablakban. k = cv2.waitKey (1) & 0xFF if (k == ord ('q')): #ha a 'q' billentyűt megnyomja, kilép a while ciklusból. szünet

cv2.destroyAllWindows () #bezár minden ablakot

ard.close () #zárja a soros kommunikációt

vid.release () #leállítja a videó fogadását a webkamerától.

4. lépés: Az Arduino programozása

Nyugodtan módosítsa a programot a hardver beállításának megfelelően, az Ön igényeinek megfelelően.

#befoglalni

Szervo szervoX;

Szervo szervoY;

int x = 90;

int y = 90;

void setup () {

// tegye ide a beállítási kódot, hogy egyszer lefusson: Serial.begin (9600); servoX.attach (9); servoY.attach (10); servoX.write (x); servoY.write (y); késleltetés (1000); }

char input = ""; // a soros bemenet ebben a változóban van tárolva

void loop () {

// tegye ide a fő kódot az ismételt futtatáshoz: if (Serial.available ()) {// ellenőrzi, hogy vannak -e adatok a soros puffer bemenetben = Serial.read (); // beolvassa az adatokat egy változóba, ha (input == 'U') {servoY.write (y+1); // beállítja a szervo szöget az y += 1 bemenet szerint; // frissíti a szög értékét} 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 (input == 'R') {servoX.write (x+1); x += 1; } else {servoX.write (x); } input = ""; // törli a változót} // a folyamat folyamatosan ismétlődik !!:)}

5. lépés: Következtetés

Ez egy szép és interaktív módszer, amellyel megtervezheti a Computer Vision beépítését Arduino projektjeibe. A Computer Vision valójában nagyon szórakoztató. És nagyon remélem, hogy tetszett nektek. Ha igen, tudassa velem a megjegyzésekben. És kérlek iratkozz fel a youtube csatornámra. Előre is köszönöm <3 <3

youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/videos

Ajánlott: