Spisu treści:
- Krok 1: Rzeczy, których będziesz potrzebować:
- Krok 2: Konfiguracja środowiska Pythona:
- Krok 3: Skrypt Pythona:
- Krok 4: Kod Arduino:
- Krok 5: Mechanizm Pan-Tilt:-
- Krok 6: Tworzenie połączeń:
- Krok 7: TESTOWANIE:
Wideo: ŚLEDZENIE TWARZY ZA POMOCĄ ARDUINO !!!: 7 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:27
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ć:
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:
- Python 2.7 (powinien być zainstalowany, system operacyjny Linux zwykle ma go preinstalowany)
- OpenCV (możesz pobrać go osobno lub zainstalować za pomocą „pip install” Wyjaśnione dalej)
- pyserial (może być zainstalowany z pipem)
- numpy.
- Kaskada Haar.
Po zebraniu wszystkich rzeczy możemy przejść do etapu instalacji…
Krok 2: 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:
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:
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:-
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ń:
Tor jest dość prosty. Wystarczy podłączyć dwa serwa do arduino.
- Pionowo do pinu 5
- Poziomo do pinu 6
- Moc do +5V
- 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:
Śledzenie aktualizacji Covid-19 za pomocą ESP8266: 9 kroków
Covid-19 Update Tracker za pomocą ESP8266: Jest to projekt pokazujący aktualne dane dotyczące epidemii koronawirusa w różnych miastach stanów Indii w czasie rzeczywistym na wyświetlaczu OLED. Ten monitor stanu na żywo pomaga monitorować w czasie rzeczywistym aktualizację covid-19 w Twojej dzielnicy. Ten projekt jest całkowicie b
Kamera IP z wykrywaniem twarzy za pomocą płyty ESP32-CAM: 5 kroków
Kamera IP z wykrywaniem twarzy za pomocą płyty ESP32-CAM: Ten post różni się od innych i przyjrzymy się bardzo interesującej płycie ESP32-CAM, która jest zaskakująco tania (mniej niż 9 USD) i łatwa w użyciu. Tworzymy prostą kamerę IP, która może być używana do przesyłania strumieniowego obrazu wideo na żywo za pomocą 2
Śledzenie twarzy i wykrywanie uśmiechu Roboty Halloween: 8 kroków (ze zdjęciami)
Śledzenie twarzy i wykrywanie uśmiechu Roboty Halloween: Halloween nadchodzi! Postanowiliśmy zbudować coś fajnego. Poznaj roboty Ghosty i Skully. Mogą podążać za twoją twarzą i wiedzą, kiedy się uśmiechasz, aby się z tobą śmiać! Ten projekt jest kolejnym przykładem użycia aplikacji iRobbie, która konwertuje iPhone'a na
Śledzenie zmian przyspieszenia za pomocą Raspberry Pi i MMA7455 za pomocą Pythona: 6 kroków
Śledzenie zmian akceleracji za pomocą Raspberry Pi i MMA7455 przy użyciu Pythona: nie potknąłem się, testowałem grawitację. Nadal działa… Reprezentacja przyspieszającego wahadłowca kosmicznego wyjaśniała, że zegar w najwyższym punkcie wahadłowca wybierałby szybszy niż zegar u podstawy z powodu grawitacyjnego rozszerzania się czasu. Trochę
Śledzenie ruchu oka za pomocą czujnika podczerwieni: 5 kroków
Śledzenie ruchu oczu za pomocą czujnika podczerwieni: Użyłem czujnika podczerwieni do wykrywania ruchów oczu i sterowania diodą LED. Zrobiłem gałki oczne za pomocą taśmy LED NeoPixel