Obsah:

SLEDOVÁNÍ TVÁŘE S POUŽITÍM ARDUINA !!!: 7 kroků
SLEDOVÁNÍ TVÁŘE S POUŽITÍM ARDUINA !!!: 7 kroků

Video: SLEDOVÁNÍ TVÁŘE S POUŽITÍM ARDUINA !!!: 7 kroků

Video: SLEDOVÁNÍ TVÁŘE S POUŽITÍM ARDUINA !!!: 7 kroků
Video: ANDROID MÁ JEDNO SKRYTÉ NASTAVENÍ 🤖 2024, Červenec
Anonim
SLEDOVÁNÍ TVÁŘE S POUŽITÍM ARDUINO !!!
SLEDOVÁNÍ TVÁŘE S POUŽITÍM ARDUINO !!!

V předchozím pokynu jsem sdílel, jak můžete komunikovat mezi Arduino a Python pomocí modulu 'pyserial' a ovládat LED. Pokud jste to neviděli, podívejte se sem: KOMUNIKACE MEZI ARDUINEM A PYTHONEM!

A jak můžete detekovat barvu objektu a sledovat jej na obrazovce, podívejte se sem: COLOR DETECTION pomocí OPENCV a PYTHON.

V tomto Instructable vám ukážu, jak sledovat tváře pomocí Arduino a Python a přimět kameru sledovat obličej. Může to znít obtížně, ale věřte mi, že není, vše, co potřebujete, je základní znalost Arduina a Pythonu.

Začněme tedy…

Krok 1: Věci, které budete potřebovat:

Věci, které budete potřebovat
Věci, které budete potřebovat
Věci, které budete potřebovat
Věci, které budete potřebovat
Věci, které budete potřebovat
Věci, které budete potřebovat

Požadavky jsou minimální. Zde jsem poskytl dílčí seznam všeho, co potřebujete:

Hardwarový požadavek:

  • Arduino UNO (Amazon USA / Amazon EU)
  • Webová kamera (Amazon USA / Amazon EU)
  • Serva x 2 (Amazon USA / Amazon EU)
  • Breadboard (Amazon USA / Amazon EU)
  • Servo Pan Tilt Kit (Amazon USA / Amazon EU)

Softwarový požadavek:

  1. Python 2.7 (Měl by být nainstalován, Linux OS ho obvykle má předinstalovaný)
  2. OpenCV (Můžete si jej stáhnout samostatně nebo nainstalovat pomocí 'pip install' Vysvětleno dále)
  3. pyserial (lze nainstalovat pomocí pip)
  4. otupělý.
  5. Haarcascade.

Jakmile je vše shromážděno, můžeme přejít ke kroku instalace…

Krok 2: Nastavení prostředí Pythonu:

Nastavení prostředí Pythonu
Nastavení prostředí Pythonu
Nastavení prostředí Pythonu
Nastavení prostředí Pythonu
Nastavení prostředí Pythonu
Nastavení prostředí Pythonu

Instalace Pythonu:

Nejprve tedy potřebujeme zprovoznit Python 2.7. Chcete -li to provést, nejprve si stáhněte a nainstalujte python 2.7.14. Chcete -li zkontrolovat, zda je nainstalován správně, přejděte na: Windows Search >> Zadejte „IDLE“>> Stiskněte Enter. Měl by se objevit Python Shell.

NEBO

Do vyhledávacího pole zadejte „CMD“a stisknutím klávesy Enter otevřete příkazový řádek. V CMD zadejte >> python a stiskněte Enter, mělo by se zobrazit rozhraní Pythonu.

Pokud v CMD vidíte chybu, nepropadejte panice, pravděpodobně budete muset nastavit proměnnou prostředí. Pomocí tohoto tutoriálu můžete nastavit proměnnou prostředí.

Instalace 'pyserial', 'OpenCV "a" numpy "v pythonu:

K instalaci těchto modulů použijeme použití pip install, Nejprve otevřete CMD a zadejte následující kódy:-

pip install serial

pip install opencv-python> pip install numpy

tyto příkazy nainstalují potřebné moduly. Nyní můžeme přejít k kódovací části …

Krok 3: Python Script:

Python skript
Python skript

Než začnete psát kód, musíte nejprve vytvořit novou složku, protože celý kód musí být uložen ve stejné složce. Vytvořte si tedy novou složku, pojmenujte ji libovolně. a níže si stáhněte „Haarcascade“a vložte jej do složky.

Nyní otevřete poznámkový blok a napište níže uvedený skript, uložte jej jako 'face.py' do stejné složky jako haarcascade. (Níže uvedený soubor si můžete stáhnout níže):

#importujte všechny požadované moduly

import numpy as np import serial serial time import import sys import cv2 #Setup Komunikační cesta pro arduino (Místo 'COM5' vložte port, ke kterému je připojeno vaše arduino) arduino = serial. Serial ('COM5', 9600) time.sleep (2) tisk („Připojeno k arduino…“) #import Haarcascade pro detekci obličeje face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') #Zachycení video streamu z webové kamery. cap = cv2. VideoCapture (0) #Přečtěte si zachycený obrázek, převeďte jej na šedý obraz a najděte obličeje, zatímco 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 (img, (250, 250), 5, (255, 255, 255), -1) grey = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) tváře = face_cascade.detectMultiScale (šedá, 1.3) # detekovat obličej a udělat kolem něj obdélník. pro (x, y, w, h) v plochách: cv2.rectangle (img, (x, y), (x+w, y+h), (0, 255, 0), 5) roi_gray = šedá [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)) tisk (' Y: '+str (y)) tisk (' x+w: '+str (x+w)) tisk (' y+h: '+str (y+h)) # Střed roi (Obdélník) xx = int (x+(x+h))/2 rr = int (y+(y+w))/2 tisk (xx) tisk (rr) střed = (xx, rr) # odesílání dat na arduino print („Center of Rectangle is:", center) data = "X {0: d} Y {1: d} Z".format (xx, yy) print ("output = '" +data + "'") arduino.write (data) #Zobrazit stream. cv2.imshow ('img', img) #Hit 'Esc' pro ukončení provádění k = cv2.waitKey (30) & 0xff if k == 27: break

Jakmile to bude hotovo, pokračujte v psaní kódu pro arduino …

Krok 4: Arduino kód:

Arduino kód
Arduino kód

Poté, co je skript pythonu připraven, potřebujeme k ovládání serva skicu arduina. Prostudujte si níže uvedený kód, vložte jej do Arduino IDE a uložte jako 'servo.ino' do stejné složky jako face.py a haarcascade. nahrajte kód a přejděte k dalšímu kroku k vytvoření připojení.

(Níže uvedený soubor ke stažení)

#zahrnout

Servo servoVer; // Vertikální servo servo servoHor; // Horizontální servo int x; int y; int předchozíX; int prevY; neplatné nastavení () {Serial.begin (9600); servoVer.attach (5); // Připojte vertikální servo na pin 5 servoHor.attach (6); // Připojte horizontální servo na pin 6 servoVer.write (90); servoHor.write (90); } void 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: Mechanismus naklápění:-

Mechanismus naklápění
Mechanismus naklápění
Mechanismus naklápění
Mechanismus naklápění

Použil jsem snadno dostupnou soupravu pro Pan-Tilt. Pokud chcete, můžete si jej vyrobit sami pomocí dřeva/plastu nebo dokonce 3D tisku.

Ten, který jsem použil, je docela levný a velmi snadno se skládá. Pokud však chcete návod, jak na to, najdete ho zde.

Krok 6: Provádění připojení:

Vytváření připojení
Vytváření připojení
Vytváření připojení
Vytváření připojení

Okruh je docela jednoduchý. Stačí k arduinu připojit dvě serva.

  1. Svisle na kolík 5
  2. Vodorovně ke kolíku 6
  3. Napájení na +5V
  4. Zem k GND

Zkontrolujte schéma zapojení.

Krok 7: TESTOVÁNÍ:

  • Poté, co je vše hotové, poslední věc, kterou musíte udělat, je vyzkoušet, zda to funguje. Chcete -li nejprve otestovat, ujistěte se, že jsou serva správně připojena k arduinu a načte se skica.
  • Po nahrání skici nezapomeňte zavřít IDE, aby se port mohl volně připojit k pythonu.
  • Nyní otevřete 'face.py' s Python IDLE a stiskněte 'F5' pro spuštění kódu. Připojení k arduinu bude trvat několik sekund a poté byste měli vidět okno streamující webovou kameru. Nyní kód detekuje vaši tvář a serva ji budou sledovat a sledovat ji.
  • Servo by se mělo pohybovat při pohybu objektu. Nyní stačí připojit kameru k servům, aby se pohybovala společně se servy.

Děkuji.

Doporučuje: