Spisu treści:

ŚLEDZENIE TWARZY ZA POMOCĄ ARDUINO !!!: 7 kroków
ŚLEDZENIE TWARZY ZA POMOCĄ ARDUINO !!!: 7 kroków

Wideo: ŚLEDZENIE TWARZY ZA POMOCĄ ARDUINO !!!: 7 kroków

Wideo: ŚLEDZENIE TWARZY ZA POMOCĄ ARDUINO !!!: 7 kroków
Wideo: 10 sygnałów, że ktoś śledzi twój telefon 2024, Lipiec
Anonim
ŚLEDZENIE TWARZY ZA POMOCĄ ARDUINO !!!
ŚLEDZENIE TWARZY ZA POMOCĄ ARDUINO !!!

W poprzedniej instrukcji podzieliłem się, w jaki sposób można komunikować się między Arduino i Pythonem za pomocą modułu „pyserial” i sterować diodą LED. Jeśli jeszcze tego nie widziałeś, sprawdź tutaj: KOMUNIKACJA MIĘDZY ARDUINO I PYTHON !

I jak możesz wykryć kolor obiektu i śledzić go na ekranie, sprawdź to tutaj: WYKRYWANIE KOLORU ZA POMOCĄ OPENCV I PYTHONA.

W tej instrukcji pokażę, jak śledzić twarze za pomocą Arduino i Pythona i sprawić, by kamera podążała za twarzą. To może wydawać się trudne, ale uwierz mi, że tak nie jest. Wszystko, czego potrzebujesz, to podstawowa znajomość Arduino i Pythona.

Więc zacznijmy…

Krok 1: Rzeczy, których będziesz potrzebować:

Rzeczy, których będziesz potrzebować
Rzeczy, których będziesz potrzebować
Rzeczy, których będziesz potrzebować
Rzeczy, których będziesz potrzebować
Rzeczy, których będziesz potrzebować
Rzeczy, których będziesz potrzebować

Wymagania są minimalne. Tutaj podałem listę części wszystkiego, czego potrzebujesz:

Wymagania sprzętowe:

  • Arduino UNO (Amazon USA / Amazon UE)
  • Kamera internetowa (Amazon US / Amazon EU)
  • Serwa x 2 (Amazon USA / Amazon UE)
  • Deska do krojenia chleba (Amazon US / Amazon EU)
  • Zestaw Servo Pan Tilt (Amazon US / Amazon EU)

Wymagania dotyczące oprogramowania:

  1. Python 2.7 (powinien być zainstalowany, system operacyjny Linux zwykle ma go preinstalowany)
  2. OpenCV (możesz pobrać go osobno lub zainstalować za pomocą „pip install” Wyjaśnione dalej)
  3. pyserial (może być zainstalowany z pipem)
  4. numpy.
  5. Kaskada Haar.

Po zebraniu wszystkich rzeczy możemy przejść do etapu instalacji…

Krok 2: Konfiguracja środowiska Pythona:

Konfiguracja środowiska Pythona
Konfiguracja środowiska Pythona
Konfiguracja środowiska Pythona
Konfiguracja środowiska Pythona
Konfiguracja środowiska Pythona
Konfiguracja środowiska Pythona

Instalowanie Pythona:

Więc najpierw potrzebujemy działającego Pythona 2.7. Aby to zrobić, najpierw pobierz i zainstaluj Pythona 2.7.14. Aby sprawdzić, czy jest poprawnie zainstalowany Idź do: Windows Search >> Wpisz "IDLE" >> Naciśnij Enter. Powinna pojawić się powłoka Pythona.

LUB

W wyszukiwaniu wpisz „CMD” i naciśnij Enter, aby otworzyć wiersz polecenia. W CMD wpisz >> python i naciśnij enter, interfejs Pythona powinien wyświetlić.

Jeśli widzisz błąd w CMD, Nie panikuj, prawdopodobnie musisz ustawić zmienną środowiskową. Możesz skorzystać z tego samouczka tutaj, aby skonfigurować zmienną środowiskową.

Instalowanie 'pyserial', 'OpenCV" i "numpy" w pythonie:

Aby zainstalować te moduły użyjemy pip install, Najpierw otwórz CMD i wpisz następujące kody:-

pip zainstalować serial

pip zainstaluj opencv-python > pip zainstaluj numpy

te polecenia zainstalują niezbędne moduły. Teraz możemy przejść do części kodowania…

Krok 3: Skrypt Pythona:

Skrypt Pythona
Skrypt Pythona

Przed rozpoczęciem pisania kodu pierwszą rzeczą do zrobienia jest utworzenie nowego folderu, ponieważ cały kod musi być przechowywany w tym samym folderze. Więc utwórz nowy folder, nazwij go, jak chcesz. i pobierz 'Haarcascade' od dołu i wklej go do folderu.

Teraz otwórz notatnik i napisz skrypt podany poniżej, Zapisz go jako 'face.py' w tym samym folderze co haarcascade. (Możesz pobrać kod, który udostępniłem w pliku poniżej):

#importuj wszystkie wymagane moduły

import numpy as np import serial import time import sys import cv2 #Setup Ścieżka komunikacji dla arduino (w miejsce 'COM5' wstaw port, do którego jest podłączone twoje arduino) arduino = serial. Serial('COM5', 9600) time.sleep (2) print("Connected to arduino…") #importowanie Haarcascade do wykrywania twarzy face_cascade = cv2. CascadeClassifier('haarcascade_frontalface_default.xml') #Aby przechwycić strumień wideo z kamery internetowej. cap = cv2. VideoCapture(0) #Odczytaj przechwycony obraz, przekonwertuj go na szary obraz i znajdź twarze podczas gdy 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) szary = cv2.cvtColor(img, cv2. COLOR_BGR2GRAY) twarze = face_cascade.detectMultiScale(szary, 1.3) # wykryj twarz i zrób wokół niej prostokąt. dla (x, y, w, h) w ścianach: cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 5) roi_gray = gray[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))) # Środek ROi (Prostokąt) xx = int(x+(x+h))/2 yy = int(y+(y+w))/2 print (xx) print (yy) center = (xx, yy) # wysyłanie danych do arduino print("Środkiem prostokąta jest:", center) data = "X{0:d}Y{1:d}Z".format(xx, yy) print ("output = '" +data+ "'") arduino.write(data) #Wyświetl strumień. cv2.imshow('img', img) #Wciśnij 'Esc', aby zakończyć wykonywanie k = cv2.waitKey(30) & 0xff jeśli k == 27: przerwa

Gdy to zrobisz, przejdź do napisania kodu dla arduino…

Krok 4: Kod Arduino:

Kod Arduino
Kod Arduino

Po przygotowaniu skryptu Pythona potrzebujemy szkicu arduino do sterowania serwomechanizmem. Zapoznaj się z poniższym kodem, wklej go w Arduino IDE i zapisz jako 'servo.ino' w tym samym folderze co face.py i haarcascade. wgraj kod i przejdź do następnego kroku, aby wykonać połączenia.

(Plik do pobrania podany poniżej)

#włączać

serwo serwo; //Vertical Servo Servo servoHor; //Serwo poziome int x; int y; int prevX; int poprzedni; void setup() { Serial.begin(9600); servoVer.attach(5); //Dołącz serwo pionowe do pinu 5 servoHor.attach(6); //Podłącz serwo poziome do pinu 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); serwoY = min(serwoY, 179); serwoY = max(serwoY, 95); servoHor.write(servoX); servoVer.write(serwoY); } } void loop() { if(Serial.available() > 0) { if(Serial.read() == 'X') { x = Serial.parseInt(); if(Serial.read() == 'Y') { y = Serial.parseInt(); Poz(); } } while(Serial.available() > 0) { Serial.read(); } } }

Krok 5: Mechanizm Pan-Tilt:-

Mechanizm uchylno-obrotowy
Mechanizm uchylno-obrotowy
Mechanizm uchylno-obrotowy
Mechanizm uchylno-obrotowy

Użyłem łatwo dostępnego zestawu do Pan-Tilt. Jeśli chcesz, możesz zrobić to sam, używając drewna/plastiku, a nawet wydruku 3D.

Ten, którego użyłem, jest dość tani i bardzo łatwy w montażu. Jeśli jednak potrzebujesz instrukcji, jak to zrobić, możesz je znaleźć tutaj.

Krok 6: Tworzenie połączeń:

Tworzyć połączenia
Tworzyć połączenia
Tworzyć połączenia
Tworzyć połączenia

Tor jest dość prosty. Wystarczy podłączyć dwa serwa do arduino.

  1. Pionowo do pinu 5
  2. Poziomo do pinu 6
  3. Moc do +5V
  4. Uziemienie do GND

Sprawdź schemat obwodu w celach informacyjnych.

Krok 7: TESTOWANIE:

  • Po tym, jak wszystko jest zrobione, ostatnią rzeczą do zrobienia jest sprawdzenie, czy działa. Aby przetestować najpierw upewnij się, że serwa są prawidłowo podłączone do arduino i wgrałeś szkic.
  • Po przesłaniu szkicu pamiętaj o zamknięciu IDE, aby port mógł swobodnie łączyć się z Pythonem.
  • Teraz otwórz 'face.py' za pomocą IDLE Pythona i naciśnij 'F5', aby uruchomić kod. Połączenie z arduino zajmie kilka sekund, a następnie powinieneś być w stanie zobaczyć okno przesyłania strumieniowego z kamery internetowej. Teraz kod wykryje twoją twarz, a serwa będą ją śledzić.
  • Serwo powinno się poruszać, gdy poruszasz obiektem. Teraz wystarczy przymocować kamerę do serw, aby poruszała się wraz z serwami.

Dziękuję Ci.

Zalecana: