Talaan ng mga Nilalaman:

FACE TRACKING USING ARDUINO !!!: 7 Hakbang
FACE TRACKING USING ARDUINO !!!: 7 Hakbang

Video: FACE TRACKING USING ARDUINO !!!: 7 Hakbang

Video: FACE TRACKING USING ARDUINO !!!: 7 Hakbang
Video: Using 28BYJ-48 Stepper Motor Push button Speed with 8 projects: Ultimate Video Tutorial Lesson 107 2024, Hulyo
Anonim
FACE TRACKING USING GAMIT SA ARDUINO !!!
FACE TRACKING USING GAMIT SA ARDUINO !!!

Sa isang nakaraang itinuro na ibinahagi ko kung paano ka makikipag-usap sa pagitan ng Arduino at Python gamit ang module na 'pyserial' at kontrolin ang isang LED. Kung hindi mo pa ito nakita suriin ito dito: KOMUNIKASYON SA pagitan ng ARDUINO & PYTHON!

At kung paano mo mahahanap ang kulay ng isang bagay at subaybayan ito sa screen, Suriin iyan dito: KOLEKTO NG Detalye Gumagamit ng OPENCV AT PYTHON.

Sa Instructable na ito ay ipapakita ko sa iyo kung paano subaybayan ang mga mukha gamit ang Arduino & Python at gawin ang Camera na sundin ang mukha. Ito ay maaaring mahirap pakinggan ngunit tiwala ka sa akin hindi, Ang kailangan mo lang ay pangunahing kaalaman sa Arduino at Python.

Kaya't magsimula tayo …

Hakbang 1: Mga Bagay na Kakailanganin mo:

Mga Bagay na Kakailanganin mo
Mga Bagay na Kakailanganin mo
Mga Bagay na Kakailanganin mo
Mga Bagay na Kakailanganin mo
Mga Bagay na Kakailanganin mo
Mga Bagay na Kakailanganin mo

Minimum ang mga kinakailangan. Narito na ibinigay ko ang listahan ng bahagi ng lahat ng kailangan mo:

Kinakailangan sa Hardware:

  • Arduino UNO (Amazon US / Amazon EU)
  • Web Cam (Amazon US / Amazon EU)
  • Servos x 2 (Amazon US / Amazon EU)
  • Breadboard (Amazon US / Amazon EU)
  • Servo Pan Tilt Kit (Amazon US / Amazon EU)

Kinakailangan ng Software:

  1. Python 2.7 (Dapat na mai-install, kadalasang mayroon itong pre-install na Linux OS)
  2. OpenCV (Maaari mong i-download ito nang magkahiwalay o mag-install gamit ang 'pip install' Naipaliwanag pa)
  3. pyserial (Maaaring mai-install gamit ang pip)
  4. numpy
  5. Haarcascade.

Matapos ang bawat bagay ay natipon maaari kaming magpatuloy sa Hakbang sa Pag-install …

Hakbang 2: Pag-set-up ng Kapaligiran ng Python:

Pag-set up ng Kapaligiran ng Python
Pag-set up ng Kapaligiran ng Python
Pag-set up ng Kapaligiran ng Python
Pag-set up ng Kapaligiran ng Python
Pag-set up ng Kapaligiran ng Python
Pag-set up ng Kapaligiran ng Python

Pag-install ng Python:

Kaya kailangan muna namin ng Python 2.7 pataas at tumatakbo. Upang magawa ito sa unang pag-download at I-install ang python 2.7.14. Upang suriin kung na-install ito nang tama Goto: Paghahanap sa Windows >> I-type ang "IDLE" >> Pindutin ang Enter. Ang isang Python Shell ay dapat na mag-pop up.

O kaya

Sa uri ng paghahanap na 'CMD' at pindutin ang enter upang buksan ang Command Prompt. Sa uri ng CMD >> python at hit enter, dapat ipakita ang interface ng Python.

Kung nakakita ka ng isang error sa CMD, Huwag panic marahil kailangan mong itakda ang variable ng kapaligiran. Maaari mong sundin ang tutorial na ito Dito upang mai-set up ang Variable ng Kapaligiran.

Pag-install ng 'pyserial', 'OpenCV "at" numpy "sa sawa:

Upang mai-install ang mga modyul na ito gagamitin namin ang paggamit ng pag-install ng pip, Una buksan ang CMD at i-type ang mga sumusunod na code: -

pip install serial

pip install opencv-python> pip install numpy

ang mga utos na ito ay mai-install ang kinakailangang mga module. Maaari na kaming lumipat sa bahagi ng pag-coding …

Hakbang 3: Python Script:

Python Script
Python Script

Bago simulang isulat ang code unang dapat gawin ay gumawa ng isang bagong folder dahil ang lahat ng code ay kailangang maiimbak sa parehong folder. Kaya lumikha ng isang bagong folder, pangalanan ito anumang nais mo. at i-download ang 'Haarcascade' mula sa ibaba at i-paste ito sa folder.

Ngayon buksan ang notepad at isulat ang script na ibinigay sa ibaba, I-save ito bilang 'face.py' sa parehong folder bilang haarcascade. (Maaari mong i-download ang code na ibinigay ko sa file sa ibaba):

#import ang lahat ng kinakailangang mga module

import numpy as np import serial import time import sys import cv2 #Setup Path ng komunikasyon para sa arduino (Sa lugar ng 'COM5' ilagay ang port kung saan nakakonekta ang iyong arduino) arduino = serial. Serial ('COM5', 9600) time.sulog (2) print ("Nakakonekta sa arduino…") #import ang Haarcascade para sa pagtuklas ng mukha face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') # Upang makuha ang stream ng video mula sa webcam. cap = cv2. VideoCapture (0) #Basahin ang nakunan ng imahe, i-convert ito sa Gray na imahe at hanapin ang mga mukha habang 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) grey = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) mga mukha = face_cascade.detectMultiScale (grey, 1.3) # tuklasin ang mukha at gumawa ng isang parihaba sa paligid nito. para sa (x, y, w, h) sa mga mukha: cv2.rectangle (img, (x, y), (x + w, y + h), (0, 255, 0), 5) roi_gray = grey [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 of roi (Rectangle) xx = int (x + (x + h)) / 2 yy = int (y + (y + w)) / 2 print (xx) print (yy) center = (xx, yy) # nagpapadala ng data sa arduino print ("Center of Rectangle ay:", center) data = "X {0: d} Y {1: d} Z".format (xx, yy) print ("output = '" + data + "'") arduino.write (data) #Ipakita ang stream. cv2.imshow ('img', img) #Hit 'Esc' upang wakasan ang pagpapatupad k = cv2.waitKey (30) & 0xff kung k == 27: break

Kapag tapos na ito, magpatuloy upang isulat ang code para sa arduino…

Hakbang 4: Arduino Code:

Arduino Code
Arduino Code

Matapos ang python script ay handa na kailangan namin ng arduino sketch upang makontrol ang servo. Sumangguni sa code sa ibaba, i-paste ito sa Arduino IDE at i-save ito bilang 'servo.ino' sa parehong folder tulad ng face.py at haarcascade. i-upload ang code at magpatuloy sa susunod na hakbang upang magawa ang mga koneksyon.

(Naida-download na file na ibinigay sa ibaba)

# isama

Servo servoVer; // Vertical Servo Servo servoHor; // Pahalang na Servo int x; int y; int prevX; int prevY; void setup () {Serial.begin (9600); servoVer.attach (5); // Attach Vertical Servo to Pin 5 servoHor.attach (6); // Attach Horizontal Servo to Pin 6 servoVer.write (90); servoHor.write (90); } void Pos () {if (prevX! = x || prevY! = y) {int servoX = map (x, 600, 0, 70, 179); int servoY = mapa (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 (); kung (Serial.read () == 'Y') {y = Serial.parseInt (); Pos (); }} habang (Serial.available ()> 0) {Serial.read (); }}}

Hakbang 5: Pan-Ikiling Mekanismo: -

Mekanismo ng Pan-Tilt:
Mekanismo ng Pan-Tilt:
Mekanismo ng Pan-Tilt:
Mekanismo ng Pan-Tilt:

Gumamit ako ng isang madaling magagamit na kit para sa Pan-Tilt. Kung nais mo maaari kang gumawa ng isa sa iyong sarili gamit ang kahoy / plastik o kahit 3D print na isa.

Ang ginamit ko ay medyo mura, at napakadaling magtipun-tipon. Gayunpaman kung nais mo ang mga tagubilin sa kung paano ito gawin, mahahanap mo ito rito.

Hakbang 6: Paggawa ng Mga Koneksyon:

Paggawa ng Mga Koneksyon
Paggawa ng Mga Koneksyon
Paggawa ng Mga Koneksyon
Paggawa ng Mga Koneksyon

Ang Circuit ay medyo simple. Maglakip lamang ng dalawang servo sa arduino.

  1. Patayo sa Pin 5
  2. Pahalang sa Pin 6
  3. Lakas sa + 5V
  4. Ground sa GND

Suriin ang diagram ng circuit para sa sanggunian.

Hakbang 7: PAGSUSULIT:

  • Matapos ang lahat ay tapos na huling gawin ay subukan kung ito ay gumagana. Upang subukan muna siguraduhin na ang mga servo ay maayos na konektado sa arduino at na-upload ang sketch.
  • Matapos ma-upload ang sketch siguraduhing isara ang IDE upang ang port ay malayang kumonekta sa sawa.
  • Ngayon buksan ang 'face.py' gamit ang Python IDLE at pindutin ang 'F5' upang patakbuhin ang code. Aabutin ng ilang segundo upang kumonekta sa arduino at pagkatapos ay dapat mong makita ang isang window na streaming sa web cam. Ngayon matutukoy ng code ang iyong mukha at susubaybayan ito ng mga servo.
  • Dapat gumalaw ang Servo habang inililipat mo ang object. Ngayon ay ilakip lamang ang camera sa mga servo kaya't lilipat ito kasama ng mga servos.

Salamat.

Inirerekumendang: