Innehållsförteckning:
- Steg 1: Saker du behöver:
- Steg 2: Konfigurera Python-miljö:
- Steg 3: Python -skript:
- Steg 4: Arduino -kod:
- Steg 5: Pan-Tilt-mekanism:-
- Steg 6: Anslutningar:
- Steg 7: TESTNING:
Video: ANSIKTSSPORNING MED ARDUINO !!!: 7 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:38
I en tidigare instruerbar delade jag hur du kan kommunicera mellan Arduino och Python med hjälp av "pyserial" -modul och styra en LED. Om du inte har sett det, kolla in det här: KOMMUNIKATION MELLAN ARDUINO & PYTHON!
Och hur du kan upptäcka färg på ett objekt och spåra det på skärmen, kolla in det här: FÄRGDETEKTION MED ANVÄNDNING AV OPENCV OCH PYTHON.
I denna instruktionsbok kommer jag att visa dig hur du spårar ansikten med Arduino & Python och får kameran att följa ansiktet. Det här kan låta svårt men tro mig det är det inte. Allt du behöver är grundläggande kunskap om Arduino och Python.
Så låt oss komma igång …
Steg 1: Saker du behöver:
Kraven är lägsta. Här har jag tillhandahållit en dellista över allt du behöver:
Hårdvarukrav:
- Arduino UNO (Amazon USA / Amazon EU)
- Webbkamera (Amazon USA / Amazon EU)
- Servos x 2 (Amazon USA / Amazon EU)
- Brödbräda (Amazon USA / Amazon EU)
- Servo Pan Tilt Kit (Amazon US / Amazon EU)
Programvarukrav:
- Python 2.7 (Bör installeras, Linux OS har vanligtvis det förinstallerat)
- OpenCV (Du kan ladda ner den separat eller installera med 'pipinstallation' Förklaras vidare)
- pyserial (Kan installeras med pip)
- numpy.
- Haarcascade.
När allt är samlat kan vi gå vidare till installationssteget …
Steg 2: Konfigurera Python-miljö:
Installera Python:
Så först behöver vi Python 2.7 igång. För att göra detta först ladda ner och installera python 2.7.14. För att kontrollera om den är korrekt installerad Gå till: Windows Sök >> Skriv "IDLE" >> Hit Enter. Ett Python -skal ska dyka upp.
ELLER
Skriv "CMD" i sökningen och tryck på enter för att öppna kommandotolken. I CMD -typ >> python och tryck enter, Python -gränssnittet ska visas.
Om du ser ett fel i CMD, Panik inte, du måste antagligen ställa in en miljövariabel. Du kan följa denna handledning här för att ställa in miljövariabel.
Installera 'pyserial', 'OpenCV' och 'numpy' i python:
För att installera dessa moduler kommer vi att använda pip install, Öppna först CMD och skriv följande koder:-
pip installera serie
pip installera opencv-python> pip installera numpy
dessa kommandon installerar de nödvändiga modulerna. Nu kan vi gå till kodningsdelen …
Steg 3: Python -skript:
Innan du börjar skriva kod är det första du behöver göra en ny mapp eftersom all kod måste lagras i samma mapp. Så skapa en ny mapp, namnge den vad du vill. och ladda ner "Haarcascade" underifrån och klistra in den i mappen.
Öppna nu anteckningsblock och skriv manuset nedan, Spara det som 'face.py' i samma mapp som haarcascade. (Du kan ladda ner koden som jag har tillhandahållit filen nedan):
#importera alla nödvändiga moduler
import numpy as np import seriell importtid import sys import cv2 #Setup Kommunikationsväg för arduino (i stället för 'COM5' sätt porten till vilken din arduino är ansluten) arduino = serial. Serial ('COM5', 9600) time.sleep (2) print ("Ansluten till arduino …") #import av Haarcascade för ansiktsigenkänning face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') #För att fånga videoströmmen från webbkamera. cap = cv2. VideoCapture (0) #Läs den tagna bilden, konvertera den till gråbild och hitta ansikten medan 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.cirkel (img, (250, 250), 5, (255, 255, 255), -1) grå = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) ansikten = face_cascade.detectMultiScale (grå, 1,3) # upptäck ansiktet och gör en rektangel runt det. för (x, y, w, h) i ansikten: 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 för roi (rektangel) xx = int (x+(x+h))/2 åå = int (y+(y+w))/2 utskrift (xx) utskrift (åå) mitt = (xx, åå) # skicka data till arduino -utskrift ("Center of Rectangle is:", center) data = "X {0: d} Y {1: d} Z".format (xx, yy) print ("output = '" +data + "'") arduino.write (data) #Visa strömmen. cv2.imshow ('img', img) #Hit 'Esc' för att avsluta körningen k = cv2.waitKey (30) & 0xff if k == 27: break
När detta är gjort fortsätter du med att skriva koden för arduino …
Steg 4: Arduino -kod:
Efter att python -skriptet är klart behöver vi arduino -skiss för att styra servon. Se koden nedan, klistra in den i Arduino IDE och spara den som 'servo.ino' i samma mapp som face.py och haarcascade. ladda upp koden och gå vidare till nästa steg för att göra anslutningarna.
(Nedladdningsbar fil ges nedan)
#omfatta
Servo servoVer; // Vertikal Servo Servo servoHor; // Horisontell servo int x; int y; int prevX; int föregående; void setup () {Serial.begin (9600); servoVer.attach (5); // Fäst vertikal servo på stift 5 servoHor.attach (6); // Fäst horisontell servo på stift 6 servoVer.write (90); servoHor.write (90); } void Pos () {if (prevX! = x || prevY! = y) {int servoX = map (x, 600, 0, 70, 179); int servoY = karta (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 (); }} medan (Serial.available ()> 0) {Serial.read (); }}}
Steg 5: Pan-Tilt-mekanism:-
Jag har använt ett lättillgängligt kit för Pan-Tilt. Om du vill kan du göra en själv med trä/plast eller till och med 3D -utskrift.
Den jag använde är ganska billig och väldigt lätt att montera. Men om du vill ha instruktioner om hur du gör det kan du hitta det här.
Steg 6: Anslutningar:
Kretsen är ganska enkel. Fäst bara två servon på arduino.
- Vertikal till Pin 5
- Horisontell mot stift 6
- Ström till +5V
- Mark till GND
Kontrollera kretsschemat för referens.
Steg 7: TESTNING:
- Efter att allt är gjort är det sista att testa om det fungerar. För att testa först, se till att servon är korrekt anslutna till arduino och skiss laddas upp.
- När skissen har laddats upp, se till att stänga IDE så att porten är fri att ansluta till python.
- Öppna nu 'face.py' med Python IDLE och tryck på 'F5' för att köra koden. Det tar några sekunder att ansluta till arduino och då ska du kunna se ett fönster som strömmar webbkameran. Nu kommer koden att upptäcka ditt ansikte och servon kommer att spåra det spåra det.
- Servon ska röra sig när du flyttar objektet. Nu är det bara att fästa kameran på servon så att den rör sig tillsammans med servon.
Tack.
Rekommenderad:
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): 8 steg
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): ultraljudsgivare L298N Dc kvinnlig adapter strömförsörjning med en manlig DC-pin Arduino UNOBreadboardHur det fungerar: Först laddar du upp kod till Arduino Uno (det är en mikrokontroller utrustad med digital och analoga portar för att konvertera kod (C ++)
Sonografi med kropps-ultraljud med Arduino: 3 steg (med bilder)
Body-ultrasound Sonography With Arduino: Hej! Min hobby och passion är att förverkliga fysikprojekt. Ett av mina sista arbeten handlar om ultraljudssonografi. Som alltid försökte jag göra det så enkelt som möjligt med delar du kan få på ebay eller aliexpress. Så låt oss ta en titt på hur långt jag kan gå med
RC -spårad robot med Arduino - Steg för steg: 3 steg
RC -spårad robot med Arduino - Steg för steg: Hej killar, jag är tillbaka med ett annat häftigt robotchassi från BangGood. Hoppas att du har gått igenom våra tidigare projekt - Spinel Crux V1 - Gesture Controlled Robot, Spinel Crux L2 - Arduino Pick and Place Robot med Robotic Arms och The Badland Braw
Hur man gör en drönare med Arduino UNO - Gör en quadcopter med mikrokontroller: 8 steg (med bilder)
Hur man gör en drönare med Arduino UNO | Gör en Quadcopter Med Microcontroller: Introduktion Besök min Youtube -kanal En Drone är en mycket dyr gadget (produkt) att köpa. I det här inlägget ska jag diskutera, hur gör jag det billigt ?? Och hur kan du göra din egen så här till billigt pris … Tja i Indien alla material (motorer, ESC
Trådlös fjärrkontroll med 2,4 GHz NRF24L01 -modul med Arduino - Nrf24l01 4 -kanals / 6 -kanals sändarmottagare för Quadcopter - Rc helikopter - RC -plan med Arduino: 5 steg (med bilder)
Trådlös fjärrkontroll med 2,4 GHz NRF24L01 -modul med Arduino | Nrf24l01 4 -kanals / 6 -kanals sändarmottagare för Quadcopter | Rc helikopter | Rc -plan med Arduino: Att driva en Rc -bil | Quadcopter | Drone | RC -plan | RC -båt, vi behöver alltid en mottagare och sändare, antag att för RC QUADCOPTER behöver vi en 6 -kanals sändare och mottagare och den typen av TX och RX är för dyr, så vi kommer att göra en på vår