Innehållsförteckning:

ANSIKTSSPORNING MED ARDUINO !!!: 7 steg
ANSIKTSSPORNING MED ARDUINO !!!: 7 steg

Video: ANSIKTSSPORNING MED ARDUINO !!!: 7 steg

Video: ANSIKTSSPORNING MED ARDUINO !!!: 7 steg
Video: Сериал - "Сваты" (1-й сезон 1-я серия) фильм комедия для всей семьи 2024, November
Anonim
ANSIKTSSPORNING MED ARDUINO !!!
ANSIKTSSPORNING MED ARDUINO !!!

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:

Saker du behöver
Saker du behöver
Saker du behöver
Saker du behöver
Saker du behöver
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:

  1. Python 2.7 (Bör installeras, Linux OS har vanligtvis det förinstallerat)
  2. OpenCV (Du kan ladda ner den separat eller installera med 'pipinstallation' Förklaras vidare)
  3. pyserial (Kan installeras med pip)
  4. numpy.
  5. Haarcascade.

När allt är samlat kan vi gå vidare till installationssteget …

Steg 2: Konfigurera Python-miljö:

Konfigurera Python-miljö
Konfigurera Python-miljö
Konfigurera Python-miljö
Konfigurera Python-miljö
Konfigurera Python-miljö
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:

Python Script
Python Script

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:

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

Pan-Tilt-mekanism
Pan-Tilt-mekanism
Pan-Tilt-mekanism
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:

Anslutningar
Anslutningar
Anslutningar
Anslutningar

Kretsen är ganska enkel. Fäst bara två servon på arduino.

  1. Vertikal till Pin 5
  2. Horisontell mot stift 6
  3. Ström till +5V
  4. 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: