Satura rādītājs:
- 1. darbība: lietas, kas jums būs nepieciešamas:
- 2. darbība: Python vides iestatīšana:
- 3. darbība: Python skripts:
- 4. darbība: Arduino kods:
- 5. solis: Pan-Tilt mehānisms:-
- 6. darbība. Savienojumu izveide:
- 7. darbība: TESTĒŠANA:
Video: Sejas izsekošana, izmantojot ARDUINO !!!: 7 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:52
Iepriekšējā pamācībā es dalījos, kā jūs varat sazināties starp Arduino un Python, izmantojot “pyserial” moduli, un vadīt LED. Ja neesat to redzējis, pārbaudiet to šeit: KOMUNIKĀCIJA ARDUINO & PYTHON!
Un kā jūs varat noteikt objekta krāsu un izsekot to ekrānā, pārbaudiet to šeit: KRĀSU NOTEIKŠANA, Izmantojot OPENCV UN PYTHON.
Šajā pamācībā es jums parādīšu, kā izsekot sejas, izmantojot Arduino un Python, un likt kamerai sekot sejai. Tas var likties grūti, bet ticiet man, ka tā nav, viss, kas jums nepieciešams, ir pamatzināšanas par Arduino un Python.
Tātad, sāksim…
1. darbība: lietas, kas jums būs nepieciešamas:
Prasības ir minimālas. Šeit es sniedzu visu nepieciešamo daļu sarakstu:
Aparatūras prasības:
- Arduino UNO (Amazon ASV / Amazon ES)
- Tīmekļa kamera (Amazon ASV / Amazon ES)
- Servos x 2 (Amazon ASV / Amazon ES)
- Maizes dēlis (Amazon ASV / Amazon ES)
- Servo Pan noliekšanas komplekts (Amazon ASV / Amazon EU)
Prasība programmatūrai:
- Python 2.7 (jāinstalē, Linux OS parasti tā ir iepriekš instalēta)
- OpenCV (varat to lejupielādēt atsevišķi vai instalēt, izmantojot “pip install” Skaidrāk tālāk)
- pyserial (var uzstādīt ar pipi)
- dūšīgs.
- Haarcascade.
Pēc visu lietu apkopošanas mēs varam pāriet uz instalēšanas posmu …
2. darbība: Python vides iestatīšana:
Python instalēšana:
Tātad vispirms mums ir jāieslēdz Python 2.7. Lai to izdarītu, vispirms lejupielādējiet un instalējiet python 2.7.14. Lai pārbaudītu, vai tas ir pareizi instalēts, dodieties: Windows meklēšana >> Ierakstiet "IDLE" >> Nospiediet Enter. Jāparādās Python Shell.
VAI
Meklēšanas ierakstiet “CMD” un nospiediet taustiņu Enter, lai atvērtu komandu uzvedni. CMD tipa >> python un nospiediet taustiņu Enter, jāparāda Python saskarne.
Ja CMD redzat kļūdu, nekrītiet panikā, iespējams, ir jāiestata vides mainīgais. Jūs varat sekot šai apmācībai šeit, lai iestatītu vides mainīgo.
“Pyserial”, “OpenCV” un “numpy” instalēšana python:
Lai instalētu šos moduļus, mēs izmantosim pip install, Vispirms atveriet CMD un ierakstiet šādus kodus:-
pip instal sērijas
pip instalēt opencv-python> pip instalēt numpy
šīs komandas instalēs nepieciešamos moduļus. Tagad mēs varam pāriet uz kodēšanas daļu …
3. darbība: Python skripts:
Pirms sākat rakstīt kodu, vispirms jāizveido jauna mape, jo viss kods ir jāsaglabā tajā pašā mapē. Tāpēc izveidojiet jaunu mapi, nosauciet to par visu, ko vēlaties. un lejupielādējiet “Haarcascade” no apakšas un ielīmējiet to mapē.
Tagad atveriet piezīmju grāmatiņu un uzrakstiet zemāk norādīto skriptu. Saglabājiet to kā “face.py” tajā pašā mapē kā haarcascade. (Jūs varat lejupielādēt manu iesniegto kodu zemāk esošajā failā):
#importējiet visus nepieciešamos moduļus
importēt numpy kā np importēt sērijas importēšanas laiku importēt sys importēt cv2 #Setup Komunikācijas ceļš arduino (COM5 vietā ievietojiet portu, kuram ir pievienots jūsu arduino) arduino = serial. Serial ('COM5', 9600) time.sleep (2) print ("Savienots ar arduino …") #importing Haarcascade sejas noteikšanai face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') #Lai uzņemtu video straumi no tīmekļa kameras. cap = cv2. VideoCapture (0) #Izlasiet uzņemto attēlu, pārveidojiet to pelēkā krāsā un atrodiet sejas, kamēr 1: ret, img = cap.read () cv2.resizeWindow ('img', 500, 500) cv2.line (img, (500, 250), (0, 250), (0, 255, 0), 1) cv2.line (img, (250, 0), (250, 500), (0, 255, 0), 1) cv2.aplis (img, (250, 250), 5, (255, 255, 255), -1) pelēks = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) sejas = face_cascade.detectMultiScale (pelēks, 1.3) # atklāt seju un ap to izveidot taisnstūri. (x, y, w, h) sejās: cv2. taisnstūris (img, (x, y), (x+w, y+h), (0, 255, 0), 5) roi_gray = pelēks [y: y+h, x: x+w] roi_color = img [y: y+h, x: x+w] arr = {y: y+h, x: x+w} print (arr) print ('X: '+str (x)) drukāt (' Y: '+str (y)) drukāt (' x+w: '+str (x+w)) drukāt (' y+h: '+str (y+h))) # Roi centrs (taisnstūris) xx = int (x+(x+h))/2 yy = int (y+(y+w))/2 print (xx) print (yy) centrs = (xx, yy) # datu sūtīšana uz arduino print ("Taisnstūra centrs ir:", centrs) data = "X {0: d} Y {1: d} Z".format (xx, yy) print ("output = '" +data + "" ") arduino.write (dati) #Parādiet straumi. cv2.imshow ('img', img) #Hit 'Esc', lai pārtrauktu izpildi k = cv2.waitKey (30) & 0xff, ja k == 27: pārtraukums
Kad tas ir izdarīts, turpiniet rakstīt arduino kodu …
4. darbība: Arduino kods:
Kad python skripts ir gatavs, mums ir nepieciešama arduino skice, lai kontrolētu servo. Skatiet tālāk redzamo kodu, ielīmējiet to Arduino IDE un saglabājiet to kā “servo.ino” tajā pašā mapē, kurā atrodas face.py un haarcascade. augšupielādējiet kodu un pārejiet pie nākamās darbības, lai izveidotu savienojumus.
(Lejupielādējams fails ir norādīts zemāk)
#iekļaut
Servo servoVer; // Vertikālais servo servo servoHor; // Horizontālais servo int x; int y; int prevX; int iepriekšējais; void setup () {Serial.begin (9600); servoVer.attach (5); // Pievienojiet vertikālo servo pie tapas 5 servoHor.attach (6); // Pievienojiet horizontālo servo 6. tapai servoVer.write (90); servoHor.write (90); } void Pos () {if (prevX! = x || prevY! = y) {int servoX = karte (x, 600, 0, 70, 179); int servoY = karte (y, 450, 0, 179, 95); servoX = min (servoX, 179); servoX = max (servoX, 70); servoY = min (servoY, 179); servoY = max (servoY, 95); servoHor.write (servoX); servoVer.write (servoY); }} void loop () {if (Serial.available ()> 0) {if (Serial.read () == 'X') {x = Serial.parseInt (); ja (Serial.read () == 'Y') {y = Serial.parseInt (); Pos (); }} while (Serial.available ()> 0) {Serial.read (); }}}
5. solis: Pan-Tilt mehānisms:-
Esmu izmantojis viegli pieejamu komplektu Pan-Tilt. Ja vēlaties, varat to izgatavot pats, izmantojot koka/plastmasas vai pat 3D druku.
Tas, ko izmantoju, ir diezgan lēts un ļoti viegli saliekams. Tomēr, ja vēlaties saņemt norādījumus par to, kā to izdarīt, to varat atrast šeit.
6. darbība. Savienojumu izveide:
Ķēde ir diezgan vienkārša. Vienkārši pievienojiet divus servo arduino.
- Vertikāli līdz tapai 5
- Horizontāli līdz 6. tapai
- Jauda līdz +5V
- Zeme līdz GND
Pārbaudiet ķēdes shēmu.
7. darbība: TESTĒŠANA:
- Kad viss ir izdarīts, pēdējais, kas jādara, ir pārbaudīt, vai tas darbojas. Lai pārbaudītu, vispirms pārliecinieties, vai servo ir pareizi pievienots arduino un vai skice ir augšupielādēta.
- Pēc skices augšupielādes noteikti aizveriet IDE, lai ports varētu brīvi izveidot savienojumu ar python.
- Tagad atveriet “face.py” ar Python IDLE un nospiediet “F5”, lai palaistu kodu. Tas aizņems dažas sekundes, lai izveidotu savienojumu ar arduino, un tad jums vajadzētu redzēt logu, kas straumē tīmekļa kameru. Tagad kods atklās jūsu seju, un servos tas izsekos.
- Servo vajadzētu pārvietoties, pārvietojot objektu. Tagad vienkārši pievienojiet kameru servos, lai tā pārvietotos kopā ar servo.
Paldies.
Ieteicams:
Kustību izsekošana, izmantojot MPU-6000 un Arduino Nano: 4 soļi
Kustību izsekošana, izmantojot MPU-6000 un Arduino Nano: MPU-6000 ir sešu asu kustības izsekošanas sensors, kurā ir iestrādāts 3 asu akselerometrs un 3 asu žiroskops. Šis sensors spēj efektīvi izsekot precīzu objekta atrašanās vietu un atrašanās vietu trīsdimensiju plaknē. To var izmantot
Izsekošana un izsekošana maziem veikaliem: 9 soļi (ar attēliem)
Izsekošana un izsekošana maziem veikaliem: šī ir sistēma, kas paredzēta maziem veikaliem, kas ir paredzēts uzstādīt uz e-velosipēdiem vai motorolleriem, lai veiktu piegādi nelielā attālumā, piemēram, maizes ceptuve, kas vēlas piegādāt konditorejas izstrādājumus. Ko nozīmē izsekošana un izsekošana? Izsekošana un izsekošana ir sistēma, ko izmanto
Sejas atpazīšana un identifikācija - Arduino sejas ID, izmantojot OpenCV Python un Arduino .: 6 soļi
Sejas atpazīšana un identifikācija | Arduino sejas ID, izmantojot OpenCV Python un Arduino .: Sejas atpazīšana AKA sejas ID ir viena no svarīgākajām mūsdienu mobilo tālruņu funkcijām. Tātad, man radās jautājums " vai man var būt sejas ID savam Arduino projektam " un atbilde ir jā … Mans ceļojums sākās šādi: 1. solis: piekļuve mums
Sejas izsekošana un smaida noteikšanas Helovīna roboti: 8 soļi (ar attēliem)
Sejas izsekošana un smaida noteikšanas Helovīna roboti: Helovīns tuvojas! Mēs nolēmām izveidot kaut ko foršu. Iepazīstieties ar Ghosty un Skully robotiem. Viņi var sekot tavai sejai un zina, kad tu smaidi, lai kopā ar tevi pasmieties! Šis projekts ir vēl viens piemērs, kā izmantot lietotni iRobbie, kas pārveido iPhone par
Paātrinājuma variāciju izsekošana, izmantojot Raspberry Pi un MMA7455, izmantojot Python: 6 soļi
Paātrinājuma variāciju izsekošana, izmantojot Raspberry Pi un MMA7455, izmantojot Python: es neklupju, es testēju gravitāciju. Tas joprojām darbojas … Paātrinātā kosmosa kuģa attēlojums paskaidroja, ka pulkstenis, kas atrodas augstākajā šahtas punktā, gravitācijas laika paplašināšanās dēļ izvēlētos ātrāk nekā tas, kas atrodas bāzē. Daži