Obsah:

Sledovanie tváre pomocou ARDUINO !!!: 7 krokov
Sledovanie tváre pomocou ARDUINO !!!: 7 krokov
Anonim
Sledovanie tváre pomocou ARDUINO !!!
Sledovanie tváre pomocou ARDUINO !!!

V predchádzajúcom návode som zdieľal, ako môžete komunikovať medzi Arduino a Python pomocou modulu „pyserial“a ovládať LED diódu. Ak ste to nevideli, pozrite sa sem: KOMUNIKÁCIA MEDZI ARDUINO & PYTHON!

A ako môžete rozpoznať farbu objektu a sledovať ho na obrazovke, pozrite sa na to tu: DETEKCIA FARIEB pomocou OPENCV a PYTHONU.

V tomto návode vám ukážem, ako sledovať tváre pomocou Arduino a Python a prinútiť kameru, aby sledovala tvár. Môže to znieť ťažko, ale verte mi, že nie, stačí vám základné znalosti o Arduine a Pythone.

Začnime teda…

Krok 1: Čo budete potrebovať:

Veci, ktoré budete potrebovať
Veci, ktoré budete potrebovať
Veci, ktoré budete potrebovať
Veci, ktoré budete potrebovať
Veci, ktoré budete potrebovať
Veci, ktoré budete potrebovať

Požiadavky sú minimálne. Tu som poskytol čiastočný zoznam všetkého, čo potrebujete:

Hardvérová požiadavka:

  • Arduino UNO (Amazon USA / Amazon EÚ)
  • Webová kamera (Amazon USA / Amazon EÚ)
  • Servo x 2 (Amazon USA / Amazon EÚ)
  • Breadboard (Amazon USA / Amazon EÚ)
  • Sada naklápania servo (Amazon USA / Amazon EÚ)

Požiadavka na softvér:

  1. Python 2.7 (Mal by byť nainštalovaný, operačný systém Linux ho má spravidla predinštalovaný)
  2. OpenCV (Môžete si ho stiahnuť samostatne alebo nainštalovať pomocou „pip install“Vysvetlené ďalej)
  3. pyserial (dá sa nainštalovať s pipom)
  4. otupený.
  5. Haarcascade.

Keď je všetko zhromaždené, môžeme prejsť na krok inštalácie …

Krok 2: Nastavenie prostredia Python:

Nastavenie prostredia Python
Nastavenie prostredia Python
Nastavenie prostredia Python
Nastavenie prostredia Python
Nastavenie prostredia Python
Nastavenie prostredia Python

Inštalácia Pythonu:

Najprv teda potrebujeme, aby bol spustený Python 2.7. Za týmto účelom najskôr stiahnite a nainštalujte python 2.7.14. Ak chcete skontrolovať, či je nainštalovaný správne, choďte na: Windows Search >> Napíšte „IDLE“>> Kliknite na Enter. Mala by sa objaviť škrupina Pythonu.

ALEBO

Do vyhľadávania zadajte „CMD“a stlačením klávesu Enter otvorte príkazový riadok. V CMD type >> python a hit enter by sa malo zobraziť rozhranie Python.

Ak sa vám v CMD zobrazí chyba, neprepadajte panike, pravdepodobne budete musieť nastaviť premennú prostredia. Môžete postupovať podľa tohto tutoriálu Tu a nastaviť premennú prostredia.

Inštalácia 'pyserial', 'OpenCV "a" numpy "v pythone:

Na inštaláciu týchto modulov použijeme príkaz pip install, Najprv otvorte CMD a zadajte nasledujúce kódy:-

pip install serial

pip install opencv-python> pip install numpy

tieto príkazy nainštalujú potrebné moduly. Teraz sa môžeme presunúť do kódovacej časti …

Krok 3: Skript Python:

Skript Python
Skript Python

Predtým, ako začnete písať kód, najskôr vytvorte nový priečinok, pretože všetok kód musí byť uložený v rovnakom priečinku. Vytvorte si teda nový priečinok, pomenujte ho ľubovoľne. a nižšie si stiahnite „Haarcascade“a vložte ju do priečinka.

Teraz otvorte poznámkový blok a napíšte nižšie uvedený skript. Uložte ho ako „face.py“do rovnakého priečinka ako haarcascade. (Kód, ktorý som poskytol ako súbor, si môžete stiahnuť nižšie):

#importujte všetky požadované moduly

import numpy as np import serial serial import time import sys import cv2 #Setup Komunikačná cesta pre arduino (Na miesto 'COM5' vložte port, ku ktorému je pripojené vaše arduino) arduino = serial. Sériový ('COM5', 9600) čas.spánok (2) vytlačiť („Pripojené k arduinu …“) #import Haarcascade na detekciu tváre face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') #Zachytenie video streamu z webovej kamery. cap = cv2. VideoCapture (0) #Prečítajte si nasnímaný obrázok, preveďte ho na sivý obrázok a nájdite tváre, pričom 1: ret, img = cap.read () cv2.resizeWindow ('img', 500, 500) cv2.line (obr., (500, 250), (0, 250), (0, 255, 0), 1) cv2.line (obr., (250, 0), (250, 500), (0, 255, 0), 1) cv2.circle (obr., (250, 250), 5, (255, 255, 255), -1) sivá = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) tváre = face_cascade.detectMultiScale (sivá, 1,3) # rozpoznajte tvár a urobte okolo nej obdĺžnik. pre (x, y, w, h) v plochách: cv2.rectangle (obr., (x, y), (x+w, y+h), (0, 255, 0), 5) roi_gray = sivá [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)) # Stred roi (obdĺžnik) xx = int (x+(x+h))/2 rr = int (y+(y+w))/2 tlač (xx) tlač (rr) stred = (xx, rr) # odosielanie údajov do arduino print („Center of Rectangle is:", center) data = "X {0: d} Y {1: d} Z".format (xx, yy) print ("output = '" +data + "'") arduino.write (údaje) #Zobrazte stream. cv2.imshow ('img', img) #Hit 'Esc' na ukončenie vykonávania k = cv2.waitKey (30) & 0xff ak k == 27: break

Akonáhle to bude hotové, pokračujte v písaní kódu pre arduino …

Krok 4: Arduino kód:

Arduino kód
Arduino kód

Potom, čo je skript pythonu pripravený, potrebujeme skicu arduina na ovládanie serva. Prečítajte si nižšie uvedený kód, vložte ho do Arduino IDE a uložte ako „servo.ino“do rovnakého priečinka ako face.py a haarcascade. nahrajte kód a pokračujte ďalším krokom k vytvoreniu spojení.

(Nižšie uvedený súbor na stiahnutie)

#zahrnúť

Servo servoVer; // Vertikálne servo servo servoHor; // Horizontálne servo int x; int y; int prevX; int prevY; void setup () {Serial.begin (9600); servoVer.attach (5); // Pripojte zvislé servo na kolík 5 servoHor.attach (6); // Pripojte horizontálne servo na pin 6 servoVer.write (90); servoHor.write (90); } neplatné Pos () {if (prevX! = x || prevY! = y) {int servoX = mapa (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 (); if (Serial.read () == 'Y') {y = Serial.parseInt (); Pos (); }} while (Serial.available ()> 0) {Serial.read (); }}}

Krok 5: Mechanizmus nakláňania:-

Mechanizmus naklápania
Mechanizmus naklápania
Mechanizmus naklápania
Mechanizmus naklápania

Použil som rýchlo dostupnú súpravu pre Pan-Tilt. Ak chcete, môžete si ho vyrobiť sami pomocou dreveného/plastového alebo dokonca 3D výtlačku.

Ten, ktorý som použil, je dosť lacný a jeho montáž je veľmi jednoduchá. Ak však chcete návod, ako to urobiť, nájdete ho tu.

Krok 6: Vytvorenie pripojení:

Vytváranie spojení
Vytváranie spojení
Vytváranie spojení
Vytváranie spojení

Okruh je veľmi jednoduchý. K arduinu stačí pripojiť dve servá.

  1. Zvislo na kolík 5
  2. Horizontálne k pinu 6
  3. Napájanie na +5V
  4. Zem na GND

Pozrite sa na schému zapojenia, kde nájdete referencie.

Krok 7: TESTOVANIE:

  • Potom, čo je všetko hotové, posledná vec, ktorú musíte urobiť, je otestovať, či to funguje. Ak chcete najskôr otestovať, uistite sa, že sú servá správne pripojené k arduinu a nahráva sa skica.
  • Po nahraní náčrtu zatvorte IDE, aby sa port mohol voľne pripojiť k pythonu.
  • Teraz otvorte 'face.py' s Python IDLE a stlačením 'F5' spustite kód. Pripojenie k arduinu bude trvať niekoľko sekúnd, a potom by sa vám malo zobraziť okno streamujúce webovú kameru. Teraz kód rozpozná vašu tvár a serva ho budú sledovať a sledovať ho.
  • Servo by sa malo pohybovať pri pohybe objektu. Teraz stačí pripevniť kameru k servám, aby sa pohybovala spolu so servami.

Ďakujem.

Odporúča: