Tartalomjegyzék:

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

Videó: Arckövető eszköz! Python és Arduino: 5 lépés

Videó: Arckövető eszköz! Python és Arduino: 5 lépés
Videó: Lesson 97: Controlling Servo Motor using Rotary Encoder and Display Angle On LCD 2024, November
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: