Tartalomjegyzék:
- Kellékek
- 1. lépés: A Python és az OpenCV telepítése
- 2. lépés: Mik a Haar-szerű funkciók?
- 3. lépés: Kódolás Pythonban
- 4. lépés: Az Arduino programozása
- 5. lépés: Következtetés
Videó: Arckövető eszköz! Python és Arduino: 5 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:41
Szerző: Techovator0819Youtube Channel
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:
Versano: multifunkcionális praktikus eszköz (arduino Nano): 6 lépés
Versano: multifunkcionális praktikus eszköz (arduino Nano): Szükségem volt egy praktikus multiméterre, amely bárhová könnyen hordozható. Azt akartam, hogy kicsi és miniatűr legyen a camparisonban a normál multiméterekkel. Órákig tartó kódolással és áramkör -tervezéssel végül olyan eszközt készítettem, amely képes mérni a feszültséget
Arduino Connect több I2C eszköz: 6 lépés
Arduino több I2C eszköz csatlakoztatása: Ebben az oktatóanyagban megtanuljuk, hogyan lehet több modult I2C kapcsolattal csatlakoztatni az arduino -hoz. Nézze meg a videót! Esetünkben 4 OLED kijelzőt fogunk használni példaként, de bármely más I2C modult is használhat. Megjegyzés: 4 OLED kijelző együtt
Arduino 1 vezetékes általános kliens/slave eszköz (érzékelő): 4 lépés
Arduino 1 vezetékes általános kliens/szolga eszköz (érzékelő): Kérjük, olvassa el a Bevezetést és az utasításom 2. lépését az Arduino 1 vezetékes kijelző (144 karakter) felépítéséről, hogy további információkat szerezzen a helyzetről és a rendelkezésre álló könyvtárakról. Ahogy ott kifejtettük, a OneWire-Hub könyvtárat fogjuk használni
ASS eszköz (antiszociális szociális eszköz): 7 lépés
ASS eszköz (antiszociális szociális eszköz): Tegyük fel, hogy Ön az a fajta ember, aki szereti az emberek közelében lenni, de nem szereti, ha túl közel kerülnek hozzájuk. Te is népkedvelő vagy, és nehezen mondasz nemet az embereknek. Tehát nem tudod, hogyan mondd meg nekik, hogy vonuljanak vissza. Nos, lépjen be - az ASS eszköz! Y
Arckövető pisztoly: 4 lépés
Arckövető pisztoly: Ez a projekt az itt látható lézer kioldó drótpisztoly projekt kiterjesztése-https://www.instructables.com/id/Building-a-Sentry-Gun-with-Laser-Trip-Wire-System-/ ? ALLSTEPS Az egyetlen különbség az, hogy a fegyvert nem lézerrel, hanem