Sisällysluettelo:
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-13 06:57
Edellisessä ohjeessa kerroin, kuinka voit kommunikoida Arduinon ja Pythonin välillä käyttämällä pyserial -moduulia ja ohjata LEDiä. Jos et ole nähnyt sitä, katso se täältä: ARDUINON JA PYTHONIN VÄLITYS!
Ja kuinka voit tunnistaa esineen värin ja seurata sitä näytöllä, tarkista se täältä: VÄRITUNNISTUS OPENCV: N JA PYTHONIN KÄYTTÖÄ käyttäen.
Tässä opetusohjelmassa näytän sinulle, kuinka voit seurata kasvoja Arduino & Pythonin avulla ja saada kamera seuraamaan kasvoja. Tämä voi kuulostaa vaikealta, mutta usko minua, että se ei ole, tarvitset vain perustiedot Arduinosta ja Pythonista.
Aloitetaan siis…
Vaihe 1: Tarvitsemasi asiat:
Vaatimukset ovat vähimmäisvaatimukset. Tässä olen antanut osaluettelon kaikesta mitä tarvitset:
Laitteistovaatimus:
- Arduino UNO (Amazon USA / Amazon EU)
- Verkkokamera (Amazon USA / Amazon EU)
- Servot x 2 (Amazon USA / Amazon EU)
- Leipälauta (Amazon USA / Amazon EU)
- Servo Pan Tilt Kit (Amazon USA / Amazon EU)
Ohjelmistovaatimus:
- Python 2.7 (pitäisi asentaa, Linux-käyttöjärjestelmässä se on yleensä esiasennettu)
- OpenCV (Voit ladata sen erikseen tai asentaa käyttämällä '' pip install '' - selitystä)
- pyserial (voidaan asentaa pipillä)
- numpy.
- Haarcascade.
Kun kaikki asiat on koottu, voimme siirtyä asennusvaiheeseen…
Vaihe 2: Python-ympäristön määrittäminen:
Pythonin asentaminen:
Joten ensin tarvitsemme Python 2.7: n käyttöön. Voit tehdä tämän ensin lataamalla ja asentamalla python 2.7.14. Tarkistaaksesi, onko se asennettu oikein Siirry: Windows -haku >> Kirjoita "IDLE" >> Paina Enter. Python Shellin pitäisi avautua.
TAI
Kirjoita hakuun "CMD" ja avaa komentokehote painamalla Enter. CMD -tyypissä >> python ja paina Enter, Python -käyttöliittymän pitäisi näkyä.
Jos näet virheen CMD: ssä, älä paniikkia, sinun on todennäköisesti asetettava ympäristömuuttuja. Voit seurata tätä opetusohjelmaa täällä ympäristömuuttujan määrittämiseen.
'Pyserial', 'OpenCV' ja 'numpy' asentaminen pythoniin:
Näiden moduulien asentamiseen käytämme pip install, Avaa ensin CMD ja kirjoita seuraavat koodit:-
pip -asennussarja
pip install opencv-python> pip install numpy
nämä komennot asentavat tarvittavat moduulit. Nyt voimme siirtyä koodausosaan …
Vaihe 3: Python -skripti:
Ennen kuin aloitat koodin kirjoittamisen, sinun on ensin tehtävä uusi kansio, koska kaikki koodit on tallennettava samaan kansioon. Luo siis uusi kansio, nimeä se mitä haluat. ja lataa "Haarcascade" alta ja liitä se kansioon.
Avaa nyt muistio ja kirjoita alla oleva komentosarja, Tallenna se nimellä face.py samaan kansioon kuin haarcascade. (Voit ladata antamani koodin alla olevasta tiedostosta):
#tuoda kaikki vaaditut moduulit
import numpy np tuonti sarjatuonti aika tuonti sys tuonti cv2 #Setup Tiedonsiirtopolku arduinoon (COM5: n sijasta aseta portti, johon arduino on kytketty) arduino = serial. Serial ('COM5', 9600) time.sleep (2) print ("Yhdistetty arduinoon…") #Haarcascaden tuominen kasvojentunnistukseen face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') #Videovirran kaappaaminen verkkokamerasta. cap = cv2. VideoCapture (0) #Lue kaapattu kuva, muunna se harmaaksi kuvaksi ja etsi kasvot, kun 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.ympyrä (img, (250, 250), 5, (255, 255, 255), -1) harmaa = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) kasvot = face_cascade.detectMultiScale (harmaa, 1.3) # tunnista kasvot ja tee niiden ympärille suorakulmio. (x, y, w, h) kasvoille: cv2. suorakulmio (img, (x, y), (x+w, y+h), (0, 255, 0), 5) roi_gray = harmaa [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))) # Roin keskipiste (suorakulmio) xx = int (x+(x+h))/2 yy = int (y+(y+w))/2 print (xx) print (yy) center = (xx, yy) # tietojen lähettäminen arduino printille ("Suorakulmion keskipiste on:", keskellä) data = "X {0: d} Y {1: d} Z".muoto (xx, yy) print ("output = '" +data + "" ") arduino.write (data) #Näytä stream. cv2.imshow ('img', img) #Hit 'Esc' lopettaa suorituksen k = cv2.waitKey (30) & 0xff, jos k == 27: break
Kun tämä on tehty, kirjoita arduino -koodi…
Vaihe 4: Arduino -koodi:
Kun python -skripti on valmis, tarvitsemme arduino -luonnoksen servon ohjaamiseksi. Katso alla oleva koodi, liitä se Arduino IDE: hen ja tallenna se nimellä "servo.ino" samaan kansioon kuin face.py ja haarcascade. lataa koodi ja siirry seuraavaan vaiheeseen yhteyden luomiseksi.
(Alla oleva ladattava tiedosto)
#sisältää
Servo servoVer; // Pystysuora servoservo servoHor; // Horisontaalinen servo int x; int y; int prevX; int edellinen; void setup () {Serial.begin (9600); servoVer.attach (5); // Kiinnitä pystysuora servo nastaan 5 servoHor.attach (6); // Kiinnitä vaakasuora servo nastaan 6 servoVer.write (90); servoHor.write (90); } void Pos () {if (prevX! = x || prevY! = y) {int servoX = kartta (x, 600, 0, 70, 179); int servoY = kartta (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 (); if (Serial.read () == 'Y') {y = Serial.parseInt (); Pos (); }} while (Serial.available ()> 0) {Serial.read (); }}}
Vaihe 5: Pan-Tilt-mekanismi:-
Olen käyttänyt helposti saatavilla olevaa sarjaa Pan-Tiltille. Halutessasi voit tehdä sellaisen itse puu-/muovi- tai jopa 3D -tulostuksella.
Käyttämäni on melko halpa ja erittäin helppo koota. Jos kuitenkin haluat ohjeita sen tekemiseen, löydät sen täältä.
Vaihe 6: Yhteyksien luominen:
Circuit on melko yksinkertainen. Liitä vain kaksi servoa arduinoon.
- Pystysuora nastaan 5
- Vaakasuora nastaan 6
- Virta +5V
- Maasta GND: hen
Tarkista kytkentäkaaviosta.
Vaihe 7: TESTAUS:
- Kun kaikki on tehty, viimeinen asia on testata, toimiiko se. Testaa ensin varmistaaksesi, että servot on liitetty oikein arduinoon ja luonnos on ladattu.
- Kun luonnos on ladattu, sulje IDE, jotta portti voi muodostaa yhteyden pythoniin.
- Avaa nyt face.py Python IDLE: llä ja suorita koodi painamalla F5. Yhteyden muodostaminen arduinoon kestää muutaman sekunnin, ja sitten sinun pitäisi pystyä näkemään verkkokameran suoratoistoikkuna. Nyt koodi tunnistaa kasvosi ja servot seuraavat sitä seuratakseen sitä.
- Servon pitäisi liikkua, kun siirrät objektia. Kiinnitä nyt vain kamera servoihin, jotta se liikkuu servojen kanssa.
Kiitos.