Sisukord:

Näojälgimine ARDUINO abil !!!: 7 sammu
Näojälgimine ARDUINO abil !!!: 7 sammu

Video: Näojälgimine ARDUINO abil !!!: 7 sammu

Video: Näojälgimine ARDUINO abil !!!: 7 sammu
Video: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, Juuli
Anonim
Näojälgimine ARDUINO abil !!!
Näojälgimine ARDUINO abil !!!

Eelmises juhendis jagasin, kuidas saate Arduino ja Pythoni vahel suhelda, kasutades „pyserial” moodulit ja juhtida LED -i. Kui te pole seda näinud, vaadake seda siit: ARDUINO & PYTHONI KOMMUNIKATSIOON!

Ja kuidas saate objekti värvi tuvastada ja seda ekraanil jälgida, vaadake seda siit: VÄRVITUVASTUS OPENCV JA PYTHONI KASUTAMINE.

Selles juhendis näitan teile, kuidas Arduino ja Pythoni abil nägusid jälgida ja panna kaamera nägu jälgima. See võib tunduda keeruline, kuid uskuge mind, et see pole nii. Kõik, mida vajate, on põhiteadmised Arduino ja Pythoni kohta.

Nii et alustame…

Samm: asjad, mida vajate:

Asjad, mida vajate
Asjad, mida vajate
Asjad, mida vajate
Asjad, mida vajate
Asjad, mida vajate
Asjad, mida vajate

Nõuded on minimaalsed. Siin olen esitanud osade loendi kõigest, mida vajate:

Riistvara nõue:

  • Arduino UNO (Amazon USA / Amazon EU)
  • Veebikaamera (Amazon USA / Amazon EU)
  • Servod x 2 (Amazon USA / Amazon EU)
  • Leivalaud (Amazon USA / Amazon EU)
  • Servo Pan Tilt Kit (Amazon USA / Amazon EU)

Tarkvara nõue:

  1. Python 2.7 (tuleks installida, Linuxi operatsioonisüsteemil on see tavaliselt eelinstallitud)
  2. OpenCV (saate selle eraldi alla laadida või installida 'pip install' abil)
  3. pyserial (saab paigaldada koos toruga)
  4. numpy.
  5. Haarcascade.

Kui kõik asjad on kokku pandud, võime liikuda installimisetapi juurde …

2. samm: Pythoni keskkonna seadistamine:

Pythoni keskkonna seadistamine
Pythoni keskkonna seadistamine
Pythoni keskkonna seadistamine
Pythoni keskkonna seadistamine
Pythoni keskkonna seadistamine
Pythoni keskkonna seadistamine

Pythoni installimine:

Nii et kõigepealt on meil vaja käivitada Python 2.7. Selleks laadige esmalt alla ja installige python 2.7.14. Et kontrollida, kas see on õigesti installitud, minge: Windowsi otsing >> Tippige "IDLE" >> Vajutage sisestusklahvi. Ilmuma peaks Python Shell.

VÕI

Tippige otsingusse "CMD" ja vajutage sisestusnuppu, et avada käsuviip. CMD tüüpi >> python ja vajutage sisestusklahvi, peaks ilmuma Pythoni liides.

Kui näete CMD -s viga, ärge paanitsege, peate tõenäoliselt määrama keskkonnamuutuja. Keskkonnamuutuja seadistamiseks võite järgida seda õpetust.

Pyshoni, OpenCV ja numpy installimine pythonisse:

Nende moodulite installimiseks kasutame pip install, Esmalt avage CMD ja sisestage järgmised koodid:-

pip install jada

pip install opencv-python> pip install numpy

need käsud installivad vajalikud moodulid. Nüüd saame liikuda kodeeriva osa juurde …

Samm: Pythoni skript:

Pythoni skript
Pythoni skript

Enne koodi kirjutamise alustamist tuleb kõigepealt luua uus kaust, kuna kogu kood tuleb salvestada samasse kausta. Nii et looge uus kaust, pange sellele nimi, mida soovite. ja laadige alla 'Haarcascade' ja kleepige see kausta.

Nüüd avage märkmik ja kirjutage allpool toodud skript. Salvestage see nimega face.py samasse kausta kui haarcascade. (Allpool oleva faili saate alla laadida minu esitatud koodi):

#importige kõik vajalikud moodulid

import numpy kui np import seeria importimise aeg import sys import cv2 #Setup Arduino kommunikatsioonitee (COM5 asemel sisestage port, millega teie arduino on ühendatud) arduino = serial. Serial ('COM5', 9600) time.sleep (2) print ("Ühendatud arduinoga …") #importimine Haarcascade näotuvastuseks face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') #Videovoo jäädvustamiseks veebikaamerast. cap = cv2. VideoCapture (0) #Lugege jäädvustatud pilti, teisendage see halliks ja otsige nägusid, kui 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.ring (img, (250, 250), 5, (255, 255, 255), -1) hall = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) näod = face_cascade.detectMultiScale (hall, 1.3) # tuvastage nägu ja tehke selle ümber ristkülik. jaoks (x, y, w, h) nägudes: cv2. täisnurk (img, (x, y), (x+w, y+h), (0, 255, 0), 5) roi_gray = hall [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))) # Roi keskus (ristkülik) xx = int (x+(x+h))/2 yy = int (y+(y+w))/2 print (xx) print (yy) keskus = (xx, yy) # andmete saatmine arduino printimisse ("Ristküliku keskus on:", keskel) data = "X {0: d} Y {1: d} Z".formaat (xx, yy) print ("output = '" +data + "" ") arduino.write (andmed) #Kuva voog. cv2.imshow ('img', img) #Hit 'Esc', et lõpetada täitmine k = cv2.waitKey (30) & 0xff, kui k == 27: break

Kui see on tehtud, jätkake arduino koodi kirjutamist …

Samm: Arduino kood:

Arduino kood
Arduino kood

Kui pythoni skript on valmis, vajame servo juhtimiseks arduino visandit. Vaadake allolevat koodi, kleepige see Arduino IDE -sse ja salvestage see nimega „servo.ino” samasse kausta, kus on face.py ja haarcascade. laadige kood üles ja liikuge ühenduse loomiseks järgmise sammu juurde.

(Allalaaditav fail on toodud allpool)

#kaasake

Servo servoVer; // Vertikaalne servoservo servoHor; // Horisontaalne servo int x; int y; int prevX; int prevY; void setup () {Serial.begin (9600); servoVer.attach (5); // Kinnitage vertikaalne servo tihvtiga 5 servoHor.attach (6); // Kinnitage horisontaalne servo tihvtiga 6 servoVer.write (90); servoHor.write (90); } void Pos () {if (prevX! = x || prevY! = y) {int servoX = kaart (x, 600, 0, 70, 179); int servoY = kaart (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 (); }}}

Samm 5: Pan-Tilt mehhanism:-

Pan-Tilt mehhanism
Pan-Tilt mehhanism
Pan-Tilt mehhanism
Pan-Tilt mehhanism

Olen kasutanud Pan-Tilt jaoks kergesti kättesaadavat komplekti. Soovi korral saate selle ise teha, kasutades puitu/plastikut või isegi 3D -printimist.

See, mida ma kasutasin, on üsna odav ja seda on väga lihtne kokku panna. Kui aga soovite juhiseid selle kohta, kuidas seda teha, leiate selle siit.

6. samm: ühenduste loomine:

Ühenduste loomine
Ühenduste loomine
Ühenduste loomine
Ühenduste loomine

Ring on üsna lihtne. Lihtsalt kinnitage kaks servot arduino külge.

  1. Vertikaalselt tihvti 5 külge
  2. Horisontaalne kuni tihvtini 6
  3. Toide +5V
  4. Maapind GND -ni

Kontrollige vooluahela skeemi.

7. samm: TESTIMINE:

  • Kui kõik on tehtud, tuleb viimane asi testida, kas see töötab. Esmalt kontrollige, kas servod on arduinoga korralikult ühendatud ja visand on üles laaditud.
  • Pärast eskiisi üleslaadimist sulgege kindlasti IDE, et port saaks pythoniga ühenduse luua.
  • Nüüd avage "face.py" Python IDLE abil ja vajutage koodi käivitamiseks "F5". Arduinoga ühenduse loomiseks kulub mõni sekund ja siis peaksite nägema veebikaamera voogesituse akent. Nüüd tuvastab kood teie näo ja servod jälgivad seda.
  • Servo peaks objekti liigutamisel liikuma. Nüüd kinnitage kaamera lihtsalt servode külge, et see liiguks koos servodega.

Aitäh.

Soovitan: