Spisu treści:
- Kieszonkowe dzieci
- Krok 1: Instalacja Pythona i OpenCV
- Krok 2: Jakie są cechy podobne do Haara?
- Krok 3: Kodowanie w Pythonie
- Krok 4: Programowanie Arduino
- Krok 5: Wniosek
Wideo: Urządzenie do śledzenia twarzy! Python i Arduino: 5 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:29
Autor: Techovator0819Mój kanał na YoutubeObserwuj więcej autora:
O: Po prostu uwielbiam tworzyć nowe rzeczy. Jak rzeczy związane z mikrokontrolerami, inżynierią mechaniczną, sztuczną inteligencją, informatyką i wszystkim, co mnie interesuje. A tutaj znajdziesz wszystkie… Więcej o Techovator0819 »
Witam wszystkich, którzy czytają tę instrukcję. Jest to urządzenie do śledzenia twarzy, które działa na bibliotece Pythona o nazwie OpenCV. CV oznacza „Wizję komputerową”. Następnie skonfigurowałem interfejs szeregowy między moim komputerem a moim Arduino UNO. Oznacza to, że nie działa to tylko w Pythonie.
To urządzenie rozpoznaje Twoją twarz w kadrze, a następnie wysyła określone polecenia do Arduino, aby ustawić kamerę w taki sposób, aby pozostała w kadrze! Brzmi nieźle? Wskoczmy więc w to.
Kieszonkowe dzieci
1. Arduino UNO
2. 2 x serwomotory (każdy serwosilnik będzie w porządku, ale użyłem Tower Pro SG90)
3. Instalacja Pythona
4. Instalowanie OpenCV
5. Kamera internetowa
Krok 1: Instalacja Pythona i OpenCV
Instalacja Pythona jest całkiem prosta!
www.python.org/downloads/
Możesz skorzystać z powyższego linku, aby pobrać wersję Pythona (Mac, Windows lub Linux), która najbardziej Ci odpowiada (64-bitowa lub 32-bitowa). Reszta procesu instalacji jest prosta i zostaniesz poprowadzony przez interfejs.
Po zakończeniu instalacji otwórz wiersz polecenia i wpisz następujące polecenie:
pip zainstaluj opencv-python
To powinno zainstalować bibliotekę openCV. W przypadku rozwiązywania problemów możesz sprawdzić TĘ stronę.
Po skonfigurowaniu środowiska i wszystkich wymagań wstępnych zobaczmy, jak możemy to zbudować!
Krok 2: Jakie są cechy podobne do Haara?
Cechy przypominające haar są cechami obrazu cyfrowego. Nazwa pochodzi od falek Haar. Są to fale o kształcie kwadratu, które służą do identyfikacji cech obrazu cyfrowego. Kaskady Haar to w zasadzie klasyfikator, który pomaga nam wykrywać obiekty (w naszym przypadku twarze) za pomocą cech podobnych do haar.
W naszym przypadku, dla uproszczenia, użyjemy wstępnie przeszkolonych kaskad Haar do identyfikacji twarzy. Możesz kliknąć TEN link na stronie github i pobrać plik xml dla kaskady Haar.
1. Kliknij „haarcascade_frontalface_alt.xml”
2. Kliknij przycisk „Surowy” w prawym górnym rogu okna kodu.
3. Przekieruje Cię na inną stronę z samym tekstem.
4. Kliknij prawym przyciskiem myszy i naciśnij „Zapisz jako…”
5. Zapisz go w tym samym katalogu lub folderze, co kod Pythona, który chcesz napisać.
Krok 3: Kodowanie w Pythonie
importuj cv2
import numpy as np import seryjny czas importu
Importujemy wszystkie potrzebne nam biblioteki.
ard = serial. Serial("COM3", 9600)
Tworzymy obiekt seryjny o nazwie 'ard'. Jako parametry określamy również nazwę portu i szybkość transmisji.
face_cascade = cv2. CascadeClassifier('haarcascade_frontalface_default.xml')
Tworzymy kolejny obiekt dla naszej Kaskady Haar. Upewnij się, że plik HaarCascade pozostaje w tym samym folderze, co ten program Pythona.
vid = cv2. VideoCapture(0)
Tworzymy obiekt, który przechwytuje wideo z kamery internetowej. 0, ponieważ parametr oznacza pierwszą kamerę internetową podłączoną do mojego komputera.
docs.opencv.org/2.4/modules/objdetect/doc/cascade_classification.html
podczas gdy prawda:
_, frame = vid.read()#czyta bieżącą klatkę do zmiennej frame gray = cv2.cvtColor(frame, cv2. COLOR_BGR2GRAY)#konwertuje ramkę -> obraz w skali szarości #następująca linia wykrywa twarze. #Pierwszy parametr to obraz, na którym chcesz wykryć. #minSize=() określa minimalny rozmiar twarzy w pikselach #Kliknij powyższy link, aby dowiedzieć się więcej o twarzach klasyfikacji kaskadowej = face_cascade.detectMultiScale(gray, minSize =(80, 80), minNeighbors=3) # Pętla for do wykrywania twarzy. for (x, y, w, h) w ścianach: cv2.rectangle(ramka, (x, y), (x+w, y+h), (255, 0, 0), 2)#rysuje prostokąt wokół lica Xpos = x+(w/2)#oblicza współrzędną X środka lica. Ypos = y+(h/2)#oblicza współrzędną Y środka twarzy, jeśli Xpos > 280: #Poniższy kod blokuje sprawdzanie, czy twarz to ard.write('L'.encode()) #on lewą, prawą, górną lub dolną w stosunku do time.sleep(0.01) #środek kadru. elif Xpos 280: ard.write('D'.encode()) time.sleep(0.01) elif Ypos < 200: ard.write('U'.encode()) time.sleep(0.01) else: ard.write ('S'.encode()) time.sleep(0.01) break cv2.imshow('ramka', ramka)#wyświetla ramkę w osobnym oknie. k = cv2.waitKey(1)&0xFF if(k == ord('q')): #jeśli 'q' zostanie naciśnięte na klawiaturze, wychodzi z pętli while. przerwa
cv2.destroyAllWindows() #zamyka wszystkie okna
ard.close() #zamyka komunikację szeregową
vid.release() #przestaje odbierać wideo z kamery internetowej.
Krok 4: Programowanie Arduino
Zapraszam do modyfikowania programu zgodnie z konfiguracją sprzętową zgodnie z własnymi potrzebami.
#włączać
serwo serwoX;
serwo serwo;
int x = 90;
int y = 90;
pusta konfiguracja () {
// wstaw tutaj swój kod konfiguracyjny do jednorazowego uruchomienia: Serial.begin(9600); servoX.attach(9); serwoY.attach(10); servoX.write(x); serwoY.zapis(y); opóźnienie (1000); }
wprowadzanie znaków = ""; //wejście szeregowe jest przechowywane w tej zmiennej
pusta pętla () {
// wstaw tutaj swój główny kod, aby uruchamiał się wielokrotnie: if(Serial.available()){ //sprawdza, czy w buforze szeregowym znajdują się jakieś dane input = Serial.read(); //wczytuje dane do zmiennej if(input == 'U'){ servoY.write(y+1); //dostosowuje kąt serwa zgodnie z danymi wejściowymi y += 1; //aktualizuje wartość kąta } else if(input == 'D'){ servoY.write(y-1); y-= 1; } else{ servoY.write(y); } if(input == 'L'){ servoX.write(x-1); x-= 1; } else if(input == 'R'){ servoX.write(x+1); x += 1; } else{ servoX.write(x); } wejście = ""; //czyści zmienną } //proces się powtarza!!:) }
Krok 5: Wniosek
Jest to jeden miły i interaktywny sposób, dzięki któremu możesz projektować, aby włączyć funkcję Computer Vision do swoich projektów Arduino. Widzenie komputerowe jest całkiem zabawne. I naprawdę mam nadzieję, że wam się podobało. Jeśli tak, daj znać w komentarzach. I proszę zasubskrybuj mój kanał na youtube. Z góry dziękuję <3<3
youtube.com/channel/UCNOSfI_iQ7Eb7-s8CrExGfw/videos
Zalecana:
ŚLEDZENIE TWARZY ZA POMOCĄ ARDUINO !!!: 7 kroków
ŚLEDZENIE TWARZY ZA POMOCĄ ARDUINO !!!: W poprzedniej instrukcji podzieliłem się, w jaki sposób można komunikować się między Arduino i Python za pomocą modułu „pyserial” i sterować diodą LED. Jeśli jeszcze tego nie widziałeś, sprawdź tutaj: KOMUNIKACJA MIĘDZY ARDUINO & Pyton! I jak możesz wykryć kolor
Urządzenie ASS (antyspołeczne urządzenie społecznościowe): 7 kroków
Urządzenie ASS (Anti-Social Social Device): Załóżmy, że jesteś osobą, która lubi przebywać z ludźmi, ale nie lubi, gdy są zbyt blisko. Ty też podobasz się ludziom i trudno ci odmawiać ludziom. Więc nie wiesz, jak powiedzieć im, żeby się wycofali. No cóż, wejdź – Urządzenie ASS! T
Rozpoznawanie i identyfikacja twarzy - Arduino Face ID przy użyciu OpenCV Python i Arduino.: 6 kroków
Rozpoznawanie i identyfikacja twarzy | Arduino Face ID przy użyciu OpenCV Python i Arduino.: Rozpoznawanie twarzy AKA face ID jest obecnie jedną z najważniejszych funkcji w telefonach komórkowych. Tak więc miałem pytanie „czy mogę mieć identyfikator twarzy dla mojego projektu Arduino” a odpowiedź brzmi tak… Moja podróż zaczęła się następująco: Krok 1: Dostęp do nas
Pistolet do śledzenia twarzy: 4 kroki
Pistolet do śledzenia twarzy: Ten projekt jest rozszerzeniem pokazanego tutaj projektu pistoletu laserowego do wyzwalania drutu - https://www.instructables.com/id/Building-a-Sentry-Gun-with-Laser-Trip-Wire-System-/ ?WSZYSTKIE KROKI Jedyna różnica polega na tym, że pistolet nie będzie wyzwalany laserem, ale
Jak podłączyć urządzenie DeLorme Earthmate GPS LT-20 do Google Earth, aby uzyskać świetną mapę śledzenia GPS.: 5 kroków
Jak podłączyć urządzenie DeLorme Earthmate GPS LT-20 do programu Google Earth, aby uzyskać świetną mapę śledzenia GPS.: Pokażę ci, jak podłączyć urządzenie GPS do popularnego programu Google Earth bez korzystania z programu Google Earth Plus. Nie mam dużego budżetu, więc gwarantuję, że będzie to tak tanie, jak to tylko możliwe