INHOUDSOPGAWE:
- Stap 1: Dinge wat u benodig:
- Stap 2: Python-omgewing opstel:
- Stap 3: Python Script:
- Stap 4: Arduino -kode:
- Stap 5: Pan-kantelmeganisme:-
- Stap 6: Verbindings maak:
- Stap 7: TOETSING:
Video: GESIGSPORING MET ARDUINO !!!: 7 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:23
In 'n vorige instruksie het ek gedeel hoe u tussen Arduino en Python kan kommunikeer met behulp van 'pyserial' -module en 'n LED kan beheer. As u dit nog nie gesien het nie, kyk gerus hier: KOMMUNIKASIE TUSSEN ARDUINO & PYTHON!
En hoe u die kleur van 'n voorwerp kan opspoor en op die skerm kan opspoor, kyk hier: KLEUROPDETEKSIE MET OPENCV EN PYTHON.
In hierdie instruksies sal ek jou wys hoe om gesigte op te spoor met Arduino & Python en die kamera die gesig te laat volg. Dit klink miskien moeilik, maar vertrou my, dit is nie; Al wat u nodig het, is basiese kennis van Arduino en Python.
Laat ons dus begin …
Stap 1: Dinge wat u benodig:
Die vereistes is minimum. Hier het ek 'n lys met alles wat u benodig, verskaf:
Hardewarevereiste:
- Arduino UNO (Amazon US / Amazon EU)
- Webcam (Amazon US / Amazon EU)
- Servos x 2 (Amazon VS / Amazon EU)
- Broodbord (Amazon US / Amazon EU)
- Servo Pan Tilt Kit (Amazon US / Amazon EU)
Sagtewarevereiste:
- Python 2.7 (Moet geïnstalleer word, Linux OS het dit gewoonlik vooraf geïnstalleer)
- OpenCV (U kan dit afsonderlik aflaai of installeer met 'pip install' Verduidelik verder)
- pyseriaal (kan met pip geïnstalleer word)
- gevoelloos.
- Haarcascade.
Nadat alles bymekaargemaak is, kan ons voortgaan met die installasie -stap …
Stap 2: Python-omgewing opstel:
Python installeer:
Dus moet ons eers Python 2.7 aan die gang kry. Laai dit af en installeer eers python 2.7.14. Om te kyk of dit korrek geïnstalleer is Gaan na: Windows Search >> Tik "IDLE" >> Tik Enter. 'N Python -dop moet verskyn.
OF
Tik 'CMD' in die soektog en druk enter om die opdragprompt oop te maak. Tik in CMD >> python en druk enter, die Python -koppelvlak moet vertoon word.
Moenie paniekerig raak nie, as u 'n fout in CMD sien, moet u 'n omgewingsveranderlike stel. U kan hierdie tutoriaal hier volg om Omgewingsveranderlike op te stel.
Die installering van 'pyserial', 'OpenCV' en 'numpy' in python:
Om hierdie modules te installeer, gebruik ons pip install, Maak eers CMD oop en tik die volgende kodes in:-
pip installeer reeks
pip installeer opencv-python> pip installeer numpy
hierdie opdragte sal die nodige modules installeer. Nou kan ons na die koderingsdeel gaan …
Stap 3: Python Script:
Voordat u begin met die skryf van kode, moet u eers 'n nuwe gids maak, aangesien al die kode in dieselfde gids gestoor moet word. Skep dus 'n nuwe gids, noem dit alles wat u wil hê. en laai die 'Haarcascade' van onder af en plak dit in die gids.
Maak nou die notaboek oop en skryf die skrif hieronder, stoor dit as 'face.py' in dieselfde gids as haarcascade. (U kan die kode wat ek hieronder verskaf het, aflaai):
#voer al die vereiste modules in
invoer numpy as np invoer seriële invoer tyd invoer sys invoer cv2 #Opset Kommunikasie pad vir arduino (plaas 'poort' waar die arduino gekoppel is) arduino = serial. Serial ('COM5', 9600) time.sleep (2) druk ("Gekoppel aan arduino …") #import van die Haarcascade vir gesigopsporing face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') #Om die videostroom van die webkamera op te neem. cap = cv2. VideoCapture (0) #Lees die vasgelegde prent, omskep dit in Grey -beeld en vind gesigte terwyl 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.circle (img, (250, 250), 5, (255, 255, 255), -1) grys = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) gesigte = face_cascade.detectMultiScale (grys, 1.3) # ontdek die gesig en maak 'n reghoek om dit. vir (x, y, w, h) in vlakke: cv2.reghoek (img, (x, y), (x+w, y+h), (0, 255, 0), 5) roi_gray = grys [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)) print (' Y: '+str (y)) print (' x+w: '+str (x+w)) print (' y+h: '+str (y+h)) # Middelpunt van roi (reghoek) xx = int (x+(x+h))/2 jj = int (y+(y+w))/2 druk (xx) druk (jj) middel = (xx, jj) # stuur data na arduino -afdruk ("Center of Rectangle is:", center) data = "X {0: d} Y {1: d} Z".format (xx, yy) print ("output = '" +data + "'") arduino.write (data) #Wys die stroom. cv2.imshow ('img', img) #Hit 'Esc' om die uitvoering te beëindig k = cv2.waitKey (30) & 0xff as k == 27: breek
Sodra dit gedoen is, gaan u verder met die skryf van die kode vir arduino …
Stap 4: Arduino -kode:
Nadat die luislang gereed is, benodig ons 'n arduino -skets om die servo te beheer. Verwys na die onderstaande kode, plak dit in Arduino IDE en stoor dit as 'servo.ino' in dieselfde gids as face.py en haarcascade. laai die kode op en gaan na die volgende stap om die verbindings te maak.
(Laai lêer hieronder af)
#insluit
Servo servoVer; // Vertikale Servo Servo servoHor; // Horisontale servo int x; int y; int prevX; int prevY; ongeldige opstelling () {Serial.begin (9600); servoVer.attach (5); // Heg Vertikale Servo aan Pin 5 servoHor.attach (6); // Heg Horisontale Servo aan Pin 6 servoVer.write (90); servoHor.write (90); } ongeldig Pos () {if (prevX! = x || prevY! = y) {int servoX = map (x, 600, 0, 70, 179); int servoY = kaart (y, 450, 0, 179, 95); servoX = min (servoX, 179); servoX = maks (servoX, 70); servoY = min (servoY, 179); servoY = maks (servoY, 95); servoHor.write (servoX); servoVer.write (servoY); }} leemte -lus () {if (Serial.available ()> 0) {if (Serial.read () == 'X') {x = Serial.parseInt (); as (Serial.read () == 'Y') {y = Serial.parseInt (); Pos (); }} terwyl (Serial.available ()> 0) {Serial.read (); }}}
Stap 5: Pan-kantelmeganisme:-
Ek het 'n geredelik beskikbare kit vir die Pan-Tilt gebruik. As u wil, kan u dit self maak met hout/plastiek of selfs 3D -druk.
Die een wat ek gebruik het, is redelik goedkoop en baie maklik om te monteer. Maar as u instruksies wil hê oor hoe u dit moet doen, kan u dit hier vind.
Stap 6: Verbindings maak:
Die kring is redelik eenvoudig. Heg net twee servo's aan die arduino.
- Vertikaal tot pen 5
- Horisontaal tot pen 6
- Krag tot +5V
- Grond tot GND
Gaan die kringdiagram na vir verwysing.
Stap 7: TOETSING:
- Nadat alles gedoen is, is die laaste ding om te toets of dit werk. Om eers te toets, maak seker dat servo's behoorlik met arduino gekoppel is en dat sketse opgelaai word.
- Nadat die skets opgelaai is, moet u die IDE sluit sodat die poort gratis met python kan koppel.
- Maak nou 'face.py' oop met Python IDLE en druk 'F5' om die kode uit te voer. Dit sal 'n paar sekondes neem om aan te sluit op arduino, en dan moet u 'n venster kan sien wat die webkamera stroom. Nou sal die kode u gesig opspoor en die servo's sal dit dop.
- Die Servo moet beweeg terwyl jy die voorwerp beweeg. Koppel nou net die kamera aan die servo's sodat dit saam met servo's kan beweeg.
Dankie.
Aanbeveel:
Hoe om 'n hommeltuig te maak met Arduino UNO - Maak 'n quadcopter met behulp van mikrokontroller: 8 stappe (met foto's)
Hoe om 'n hommeltuig te maak met Arduino UNO | Maak 'n quadcopter met behulp van mikrobeheerder: inleiding Besoek my Youtube -kanaal 'n Drone is 'n baie duur apparaat (produk) om te koop. In hierdie pos gaan ek bespreek hoe ek dit goedkoop kan maak ?? En hoe kan u u eie goedkoop maak teen goedkoop pryse … In Indië is al die materiale (motors, ESC's
PWM Met ESP32 - Dim LED met PWM op ESP 32 Met Arduino IDE: 6 stappe
PWM Met ESP32 | Dim LED met PWM op ESP 32 Met Arduino IDE: In hierdie instruksies sal ons sien hoe om PWM seine te genereer met ESP32 met behulp van Arduino IDE & PWM word basies gebruik om analoog uitset van enige MCU te genereer en die analoog uitset kan tussen 0V en 3.3V wees (in die geval van esp32) & van
DIY slim weegskaal met wekker (met Wi-Fi, ESP8266, Arduino IDE en Adafruit.io): 10 stappe (met foto's)
DIY Smart Scale With Alarm Clock (met Wi-Fi, ESP8266, Arduino IDE en Adafruit.io): In my vorige projek het ek 'n slim badkamerskaal met Wi-Fi ontwikkel. Dit kan die gebruiker se gewig meet, plaaslik vertoon en dit na die wolk stuur. U kan meer inligting hieroor kry op die onderstaande skakel: https: //www.instructables.com/id/Wi-Fi-Smart-Scale-wi
Draadlose afstandsbediening met 2,4 GHz NRF24L01 -module met Arduino - Nrf24l01 4 -kanaals / 6 -kanaals sender -ontvanger voor quadcopter - Rc Helikopter - Rc -vliegtuig met Arduino: 5 stappe (met foto's)
Draadlose afstandsbediening met 2,4 GHz NRF24L01 -module met Arduino | Nrf24l01 4 -kanaals / 6 -kanaals sender -ontvanger voor quadcopter | Rc Helikopter | Rc -vliegtuig met Arduino: om 'n Rc -motor te bestuur | Quadcopter | Drone | RC -vliegtuig | RC -boot, ons het altyd 'n ontvanger en sender nodig, veronderstel dat ons vir RC QUADCOPTER 'n 6 -kanaals sender en ontvanger nodig het en dat die tipe TX en RX te duur is, so ons maak een op ons
Bedelende robot met gesigsporing en beheer deur Xbox -beheerder - Arduino: 9 stappe (met foto's)
Bedelende robot met gesigsopsporing en -beheer deur Xbox -beheerder - Arduino: Ons gaan 'n bedelrobot maak. Hierdie robot sal probeer om die verbygaande mense te irriteer of aandag te trek. Dit sal hul gesigte opspoor en lasers op hulle probeer skiet. As jy die robot 'n muntstuk gee, sing hy 'n liedjie en dans. Die robot benodig 'n