Indholdsfortegnelse:

ANSIGTSSPORING VED AT BRUGE ARDUINO !!!: 7 trin
ANSIGTSSPORING VED AT BRUGE ARDUINO !!!: 7 trin

Video: ANSIGTSSPORING VED AT BRUGE ARDUINO !!!: 7 trin

Video: ANSIGTSSPORING VED AT BRUGE ARDUINO !!!: 7 trin
Video: ДАЧНИКИ будут В ШОКЕ! Эти идеи показали даже по телевизору! 2024, November
Anonim
ANSIGTSSPORING VED AT BRUGE ARDUINO !!!
ANSIGTSSPORING VED AT BRUGE ARDUINO !!!

I en tidligere instruerbar delte jeg, hvordan du kan kommunikere mellem Arduino og Python ved hjælp af 'pyserial' -modul og styre en LED. Hvis du ikke har set det, så tjek det ud her: KOMMUNIKATION MELLEM ARDUINO & PYTHON!

Og hvordan du kan registrere farve på et objekt og spore det på skærmen, tjek det her: FARVEDETEKTION VED AT BRUGE OPENCV OG PYTHON.

I denne Instructable vil jeg vise dig, hvordan du sporer ansigter ved hjælp af Arduino & Python og får kameraet til at følge ansigtet. Dette lyder måske svært, men tro mig, det er det ikke. Alt du behøver er grundlæggende viden om Arduino og Python.

Så lad os komme i gang …

Trin 1: Ting du skal bruge:

Ting du skal bruge
Ting du skal bruge
Ting du skal bruge
Ting du skal bruge
Ting du skal bruge
Ting du skal bruge

Kravene er minimale. Her har jeg givet en deleliste over alt, hvad du har brug for:

Krav til hardware:

  • Arduino UNO (Amazon USA / Amazon EU)
  • Webkamera (Amazon USA / Amazon EU)
  • Servoer x 2 (Amazon USA / Amazon EU)
  • Breadboard (Amazon USA / Amazon EU)
  • Servo Pan Tilt Kit (Amazon USA / Amazon EU)

Softwarekrav:

  1. Python 2.7 (Skal installeres, Linux OS har det normalt forudinstalleret)
  2. OpenCV (Du kan downloade det separat eller installere ved hjælp af 'pip install' Forklaret yderligere)
  3. pyserial (Kan installeres med pip)
  4. numpy.
  5. Haarcascade.

Når alt er samlet, kan vi gå videre til installationstrinnet …

Trin 2: Opsætning af Python-miljø:

Opsætning af Python-miljø
Opsætning af Python-miljø
Opsætning af Python-miljø
Opsætning af Python-miljø
Opsætning af Python-miljø
Opsætning af Python-miljø

Installation af Python:

Så først skal vi bruge Python 2.7 og køre. For at gøre dette skal du først downloade og installere python 2.7.14. For at kontrollere, om den er installeret korrekt Gå til: Windows Søg >> Skriv "IDLE" >> Hit Enter. En Python Shell skal dukke op.

ELLER

I søgetypen 'CMD' og tryk enter for at åbne kommandoprompt. I CMD -typen >> python og tryk enter, skal Python -grænsefladen vises.

Hvis du ser en fejl i CMD, skal du ikke gå i panik, du skal sandsynligvis indstille miljøvariabel. Du kan følge denne vejledning her for at konfigurere miljøvariabel.

Installation af 'pyserial', 'OpenCV' og 'numpy' i python:

For at installere disse moduler bruger vi pip install, Åbn først CMD og indtast følgende koder:-

pip installer serie

pip installer opencv-python> pip installer numpy

disse kommandoer installerer de nødvendige moduler. Nu kan vi gå til kodningsdelen …

Trin 3: Python Script:

Python Script
Python Script

Før du begynder at skrive kode, skal du først lave en ny mappe, da al koden skal gemmes i den samme mappe. Så opret en ny mappe, navngiv den, hvad du vil. og download 'Haarcascade' nedenunder og indsæt den i mappen.

Åbn nu notesblok og skriv scriptet nedenfor, gem det som 'face.py' i den samme mappe som haarcascade. (Du kan downloade koden, jeg har givet filen herunder):

#importer alle de nødvendige moduler

import numpy as np import seriel importtid import sys import cv2 #Setup Kommunikationssti for arduino (I stedet for 'COM5' skal du sætte den port, som din arduino er forbundet til) arduino = serial. Serial ('COM5', 9600) time.sleep (2) print ("Tilsluttet arduino …") #import af Haarcascade til ansigtsdetektering face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') #Til at optage videostrømmen fra webcam. cap = cv2. VideoCapture (0) #Læs det optagne billede, konverter det til gråt billede og find ansigter, mens 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) grå = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) ansigter = face_cascade.detectMultiScale (grå, 1,3) # registrer ansigtet og lav et rektangel omkring det. for (x, y, w, h) i ansigter: cv2.rektangel (img, (x, y), (x+w, y+h), (0, 255, 0), 5) roi_gray = grå [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)) # Center for roi (rektangel) xx = int (x+(x+h))/2 yy = int (y+(y+w))/2 print (xx) print (yy) center = (xx, yy) # sender data til arduino print ("Center for rektangel er:", center) data = "X {0: d} Y {1: d} Z".format (xx, yy) print ("output = '" +data + "'") arduino.write (data) #Viser strømmen. cv2.imshow ('img', img) #Hit 'Esc' for at afslutte udførelsen k = cv2.waitKey (30) & 0xff if k == 27: break

Når dette er gjort, skal du fortsætte med at skrive koden til arduino …

Trin 4: Arduino -kode:

Arduino kode
Arduino kode

Efter at python -scriptet er klar, har vi brug for arduino sketch for at styre servoen. Se koden herunder, indsæt den i Arduino IDE og gem den som 'servo.ino' i den samme mappe som face.py og haarcascade. uploade koden og gå videre til det næste trin for at oprette forbindelserne.

(Filen kan downloades nedenfor)

#omfatte

Servo servoVer; // Lodret Servo Servo servoHor; // Horisontal Servo int x; int y; int prevX; int tidligere; ugyldig opsætning () {Serial.begin (9600); servoVer.attach (5); // Fastgør lodret servo til pin 5 servoHor.attach (6); // Fastgør vandret servo til pin 6 servoVer.write (90); servoHor.write (90); } ugyldig Pos () {hvis (prevX! = x || prevY! = y) {int servoX = map (x, 600, 0, 70, 179); int servoY = map (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 (); hvis (Serial.read () == 'Y') {y = Serial.parseInt (); Pos (); }} mens (Serial.available ()> 0) {Serial.read (); }}}

Trin 5: Pan-Tilt-mekanisme:-

Pan-Tilt-mekanisme
Pan-Tilt-mekanisme
Pan-Tilt-mekanisme
Pan-Tilt-mekanisme

Jeg har brugt et let tilgængeligt kit til Pan-Tilt. Hvis du vil, kan du selv lave en ved hjælp af træ/plastik eller endda 3D -print.

Den jeg brugte er ret billig og meget let at samle. Men hvis du vil have instruktioner om, hvordan du gør det, kan du finde det her.

Trin 6: Opret forbindelser:

Oprettelse af forbindelser
Oprettelse af forbindelser
Oprettelse af forbindelser
Oprettelse af forbindelser

Kredsløbet er ret simpelt. Bare vedhæft to servoer til arduino.

  1. Lodret til Pin 5
  2. Vandret til Pin 6
  3. Strøm til +5V
  4. Jord til GND

Kontroller kredsløbsdiagrammet for reference.

Trin 7: TESTNING:

  • Når alt er gjort, er det sidste, at teste, om det virker. For at teste først skal du sørge for, at servoer er korrekt forbundet til arduino, og at skitse uploades.
  • Når skitsen er uploadet, skal du lukke IDE'en, så porten er gratis at oprette forbindelse til python.
  • Åbn nu 'face.py' med Python IDLE, og tryk på 'F5' for at køre koden. Det vil tage et par sekunder at oprette forbindelse til arduino, og så skulle du kunne se et vindue, der streamer webkameraet. Nu vil koden registrere dit ansigt, og servoer vil spore det spore det.
  • Servoen skal bevæge sig, mens du flytter objektet. Nu skal du bare vedhæfte kameraet til servoerne, så det vil bevæge sig sammen med servoer.

Tak skal du have.

Anbefalede: