INHOUDSOPGAWE:

GESIGSPORING MET ARDUINO !!!: 7 stappe
GESIGSPORING MET ARDUINO !!!: 7 stappe

Video: GESIGSPORING MET ARDUINO !!!: 7 stappe

Video: GESIGSPORING MET ARDUINO !!!: 7 stappe
Video: Gimbal FeiyuTech VIMBLE C Unboxing Test | ForumWiedzy 2024, Julie
Anonim
GESIGSPORING MET ARDUINO !!!
GESIGSPORING MET ARDUINO !!!

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:

Dinge wat u benodig
Dinge wat u benodig
Dinge wat u benodig
Dinge wat u benodig
Dinge wat u benodig
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:

  1. Python 2.7 (Moet geïnstalleer word, Linux OS het dit gewoonlik vooraf geïnstalleer)
  2. OpenCV (U kan dit afsonderlik aflaai of installeer met 'pip install' Verduidelik verder)
  3. pyseriaal (kan met pip geïnstalleer word)
  4. gevoelloos.
  5. Haarcascade.

Nadat alles bymekaargemaak is, kan ons voortgaan met die installasie -stap …

Stap 2: Python-omgewing opstel:

Python-omgewing opstel
Python-omgewing opstel
Python-omgewing opstel
Python-omgewing opstel
Python-omgewing opstel
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:

Python Script
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:

Arduino -kode
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:-

Pan-kantel meganisme
Pan-kantel meganisme
Pan-kantel meganisme
Pan-kantel meganisme

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:

Verbindings maak
Verbindings maak
Verbindings maak
Verbindings maak

Die kring is redelik eenvoudig. Heg net twee servo's aan die arduino.

  1. Vertikaal tot pen 5
  2. Horisontaal tot pen 6
  3. Krag tot +5V
  4. 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: