Cuprins:

Urmărirea feței folosind ARDUINO !!!: 7 pași
Urmărirea feței folosind ARDUINO !!!: 7 pași

Video: Urmărirea feței folosind ARDUINO !!!: 7 pași

Video: Urmărirea feței folosind ARDUINO !!!: 7 pași
Video: Trucul care garantează orgasmul femeii în timpul actului sexual 2024, Iulie
Anonim
Urmărirea feței folosind ARDUINO !!!
Urmărirea feței folosind ARDUINO !!!

Într-o instruire anterioară am împărtășit cum puteți comunica între Arduino și Python folosind modulul „pyserial” și cum puteți controla un LED. Dacă nu l-ați văzut verificați-l aici: COMUNICARE ÎNTRE ARDUINO & PYTHON!

Și cum puteți detecta culoarea unui obiect și urmăriți-l pe ecran, verificați aici: DETECȚIA CULORII FOLOSIND OPENCV ȘI PITON.

În acest Instructable vă voi arăta cum să urmăriți fețele folosind Arduino și Python și să fac camera să urmeze fața. Acest lucru poate suna dificil, dar credeți-mă că nu este. Tot ce aveți nevoie este cunoștințe de bază despre Arduino și Python.

Deci sa începem…

Pasul 1: Lucruri de care veți avea nevoie:

Lucruri de care veți avea nevoie
Lucruri de care veți avea nevoie
Lucruri de care veți avea nevoie
Lucruri de care veți avea nevoie
Lucruri de care veți avea nevoie
Lucruri de care veți avea nevoie

Cerințele sunt minime. Aici am furnizat lista de piese cu tot ce aveți nevoie:

Cerințe hardware:

  • Arduino UNO (Amazon SUA / Amazon UE)
  • Cam web (Amazon SUA / Amazon UE)
  • Servos x 2 (Amazon SUA / Amazon UE)
  • Breadboard (Amazon SUA / Amazon UE)
  • Kit Servo Pan Tilt (Amazon SUA / Amazon UE)

Cerințe software:

  1. Python 2.7 (ar trebui să fie instalat, sistemul de operare Linux îl are de obicei preinstalat)
  2. OpenCV (Puteți să-l descărcați separat sau să îl instalați folosind „pip install” explicat în continuare)
  3. pyserial (Poate fi instalat cu pip)
  4. neclintit.
  5. Haarcascade.

După ce fiecare lucru este adunat, putem trece la Pasul de instalare …

Pasul 2: Configurarea mediului Python:

Configurarea mediului Python
Configurarea mediului Python
Configurarea mediului Python
Configurarea mediului Python
Configurarea mediului Python
Configurarea mediului Python

Instalarea Python:

Deci, mai întâi avem nevoie de Python 2.7 și să ruleze. Pentru a face acest lucru, descărcați și instalați primul python 2.7.14. Pentru a verifica dacă este instalat corect Mergeți: Căutare Windows >> Tastați "IDLE" >> Apăsați Enter. Ar trebui să apară un Shell Python.

SAU

În căutare, tastați „CMD” și apăsați Enter pentru a deschide linia de comandă. În CMD tastați >> python și apăsați Enter, ar trebui să se afișeze interfața Python.

Dacă vedeți o eroare în CMD, Nu vă panicați, probabil că trebuie să setați variabila de mediu. Puteți urmări acest tutorial aici pentru a configura variabila de mediu.

Instalarea „pyserial”, „OpenCV” și „numpy” în python:

Pentru a instala aceste module vom folosi utilizarea instalării pip, Mai întâi deschideți CMD și tastați următoarele coduri: -

pip instalează serial

pip install opencv-python> pip install numpy

aceste comenzi vor instala modulele necesare. Acum putem trece la partea de codare …

Pasul 3: Script Python:

Script Python
Script Python

Înainte de a începe să scrieți codul, primul lucru pe care trebuie să îl faceți este să creați un folder nou, deoarece tot codul trebuie să fie stocat în același folder. Deci, creați un folder nou, denumiți-l oricum doriți. și descărcați „Haarcascade” de mai jos și lipiți-l în dosar.

Acum deschideți blocnotesul și scrieți scriptul dat mai jos, Salvați-l ca „face.py” în același folder ca haarcascade. (Puteți descărca codul de care am furnizat fișierul de mai jos):

#import toate modulele necesare

import numpy ca np import serial import time import sys import cv2 #Setup Calea de comunicare pentru arduino (În locul „COM5” puneți portul la care este conectat arduino) arduino = serial. Serial („COM5”, 9600) time.sleep (2) print ("Conectat la arduino …") #importarea Haarcascade pentru detectarea feței face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') #Pentru a captura fluxul video de pe camera web. cap = cv2. VideoCapture (0) #Citiți imaginea capturată, convertiți-o în imagine Gri și găsiți fețe în timp ce 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) gri = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale (gri, 1.3) # detectați fața și faceți un dreptunghi în jurul ei. pentru (x, y, w, h) în fețe: cv2.rectangle (img, (x, y), (x + w, y + h), (0, 255, 0), 5) roi_gray = gri [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)) # Centru roi (dreptunghi) xx = int (x + (x + h)) / 2 yy = int (y + (y + w)) / 2 print (xx) print (yy) center = (xx, yy) # trimiterea datelor către arduino print ("Centrul dreptunghiului este:", centru) data = "X {0: d} Y {1: d} Z".format (xx, yy) print ("output = '" + data + "'") arduino.write (data) #Display fluxul. cv2.imshow ('img', img) #Hit 'Esc' pentru a termina execuția k = cv2.waitKey (30) & 0xff dacă k == 27: pauză

Odată ce ați făcut acest lucru, treceți la scrierea codului pentru arduino …

Pasul 4: Cod Arduino:

Cod Arduino
Cod Arduino

După ce scriptul python este gata, avem nevoie de schița arduino pentru a controla servo-ul. Consultați codul de mai jos, lipiți-l în Arduino IDE și salvați-l ca „servo.ino” în același folder cu face.py și haarcascade. încărcați codul și treceți la pasul următor pentru a face conexiunile.

(Fișier descărcabil dat mai jos)

#include

Servo servoVer; // Servo vertical Servo servoHor; // Servo orizontal int x; int y; int prevX; int prevY; void setup () {Serial.begin (9600); servoVer.attach (5); // Atașați servo vertical la pinul 5 servoHor.attach (6); // Atașați Servo orizontal la pinul 6 servoVer.write (90); servoHor.write (90); } void Pos () {if (prevX! = x || prevY! = y) {int servoX = map (x, 600, 0, 70, 179); int servoY = hartă (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 (); }}}

Pasul 5: Mecanism Pan-Tilt: -

Mecanism Pan-Tilt
Mecanism Pan-Tilt
Mecanism Pan-Tilt
Mecanism Pan-Tilt

Am folosit un kit disponibil pentru Pan-Tilt. Dacă doriți, puteți face unul singur folosind lemn / plastic sau chiar imprimare 3D.

Cel pe care l-am folosit este destul de ieftin și foarte ușor de asamblat. Cu toate acestea, dacă doriți instrucțiuni despre cum să faceți acest lucru, îl puteți găsi aici.

Pasul 6: Realizarea conexiunilor:

A face legături
A face legături
A face legături
A face legături

Circuitul este destul de simplu. Atașați doar două servos la arduino.

  1. Vertical la pinul 5
  2. Orizontală la pinul 6
  3. Putere la + 5V
  4. Pământ la GND

Verificați schema circuitului pentru referință.

Pasul 7: TESTARE:

  • După ce totul este făcut, ultimul lucru de făcut este să testați dacă funcționează. Pentru a testa mai întâi, asigurați-vă că serverele sunt conectate corect la arduino și schița este încărcată.
  • După ce schița este încărcată, asigurați-vă că închideți IDE, astfel încât portul să se poată conecta liber la python.
  • Acum deschideți „face.py” cu Python IDLE și apăsați „F5” pentru a rula codul. Va dura câteva secunde pentru a vă conecta la arduino și atunci ar trebui să puteți vedea o fereastră care transmite camera web. Acum, codul vă va detecta fața, iar serviciile îl vor urmări.
  • Servo-ul ar trebui să se miște în timp ce mutați obiectul. Acum, atașați camera la servo pentru a se deplasa împreună cu servo-urile.

Mulțumesc.

Recomandat: