Spisu treści:

Rozpoznawanie twarzy Opencv: 4 kroki
Rozpoznawanie twarzy Opencv: 4 kroki

Wideo: Rozpoznawanie twarzy Opencv: 4 kroki

Wideo: Rozpoznawanie twarzy Opencv: 4 kroki
Wideo: Face recognition with python and opencv2 #python #opencv #opencv2 #opencvpython #doctorwho 2024, Listopad
Anonim
Rozpoznawanie twarzy Opencv
Rozpoznawanie twarzy Opencv

Rozpoznawanie twarzy jest obecnie dość powszechną rzeczą w wielu aplikacjach, takich jak smartfony, wiele gadżetów elektronicznych. Ten rodzaj technologii obejmuje wiele algorytmów i narzędzi itp., które wykorzystują wbudowane platformy SOC, takie jak Raspberry Pi i wizja komputerowa typu open source biblioteki takie jak OpenCV, możesz teraz dodać rozpoznawanie twarzy do własnych aplikacji, takich jak systemy bezpieczeństwa.

W tym projekcie opowiem Ci, jak zbudować rozpoznawanie twarzy za pomocą Raspberry Pi i użyliśmy arduino+Lcd do wyświetlenia imienia osoby..

Krok 1: Rzeczy, których potrzebujesz

Rzeczy, których potrzebujesz
Rzeczy, których potrzebujesz

1. MALINOWY PI

2. ARDUINO UNO / NANO

WYŚWIETLACZ LCD 3,16x2

4. RASPI-CAMERA / WEBcam (wolę kamerę internetową, aby uzyskać lepsze wyniki)

Krok 2: Opencv-Intro i instalacja

Opencv-Intro i instalacja
Opencv-Intro i instalacja

OpenCV (open source computer vision library) to bardzo przydatna biblioteka - dostarcza wielu przydatnych funkcji, takich jak rozpoznawanie tekstu, rozpoznawanie twarzy, wykrywanie obiektów, tworzenie map głębi i uczenie maszynowe.

W tym artykule dowiesz się, jak zainstalować Opencv i inne biblioteki na Raspberry Pi, które przydadzą się podczas wykrywania obiektów i innych projektów. Stamtąd dowiemy się, jak wykonywać operacje na obrazie i wideo, wykonując projekt rozpoznawania obiektów i uczenia maszynowego. W szczególności napiszemy prosty kod do wykrywania twarzy na obrazie.

Co to jest OpenCV?

OpenCV to biblioteka oprogramowania do wizji komputerowej i uczenia maszynowego typu open source. OpenCV jest udostępniany na licencji BSD, dzięki czemu jest darmowy zarówno do użytku akademickiego, jak i komercyjnego. Ma interfejsy C++, Python i Java i obsługuje systemy Windows, Linux, Mac OS, iOS i Android. OpenCV został zaprojektowany z myślą o wydajności obliczeniowej i silnym skupieniu się na aplikacjach czasu rzeczywistego.

Jak zainstalować OpenCV na Raspberry Pi?

Aby zainstalować OpenCV, musimy mieć zainstalowany Python. Ponieważ Raspberry Pis jest wstępnie załadowany Pythonem, możemy bezpośrednio zainstalować OpenCV.

Wpisz poniższe polecenia, aby upewnić się, że Twoje Raspberry Pi jest aktualne i zaktualizować zainstalowane pakiety na Twoim Raspberry Pi do najnowszych wersji.

sudo apt-get aktualizacje sudo apt-get uaktualnienie

Wpisz następujące polecenia w terminalu, aby zainstalować wymagane pakiety dla OpenCV na swoim Raspberry Pi.

sudo apt zainstaluj libatlas3-base libsz2 libharfbuzz0b libtiff5 libjasper1 libilmbase12 libopenexr22 libilmbase12 libgstreamer1.0-0 libavcodec57 libavformat57 libavutil55 libswscale4 libqtgui4 libqtcore4test lib

Wpisz następujące polecenie, aby zainstalować OpenCV 3 dla Pythona 3 na twoim Raspberry Pi, pip3 mówi nam, że OpenCV zostanie zainstalowany dla Pythona 3.

sudo pip3 zainstaluj opencv-contrib-python libwebp6

Teraz należy zainstalować OpenCV.

(jeśli wystąpiły jakieś błędy: nadal możesz to zrobić, klikając poniższy link)

https://www.instructables.com/id/Raspberry-Pi-Hand…)

Teraz nie spiesz się, musimy sprawdzić, czy został poprawnie zainstalowany, czy nie

Przetestuj swój opencv poprzez:

1. przejdź do swojego terminala i wpisz „python”

2. następnie wpisz "import cv2".

3.następnie wpisz "cv2._wersja_".

następnie zainstaluj te biblioteki

pip3 zainstaluj python-numpy

pip3 zainstaluj python-matplotlib

Kod testowy do wykrywania twarzy na obrazie:

importuj cv2

faceCascade = cv2. CascadeClassifier("haarcascade_frontalface_default.xml");

image = cv2.imread('nazwa twojego pliku') #przykład cv2.imread('home/pi/Desktop/filename.jpg')

Otrzymasz wynik jak kwadratowe pudełka uformowane na twarzach osób, które są na zdjęciu.

Krok 3: Wykrywanie i rozpoznawanie twarzy na wideo w czasie rzeczywistym

importuj cv2

importuj numer jako np

importuj system

importuj serial

ser = serial. Serial('/dev/ttyACM0', 9600, timeout=1) # /dev/ttyACM0 może się zmienić w twoim przypadku, zależy od arduino

cascadePath = "haarcascade_frontalface_default.xml"

faceCascade = cv2. CascadeClassifier(cascadePath)

rozpoznawanie=cv2.face.createLBPHAceRecognizer()

obrazy=

etykiety=

dla nazwy pliku w os.listdir('Zbiór danych'):

im=cv2.imread('Zestaw danych/'+nazwa pliku, 0)

obrazy.append(im)

etykiety.append(int(nazwapliku.split('.')[0][0]))

#drukuj nazwę pliku

names_file=open('labels.txt')

names=names_file.read().split('\n')

rozpoznawanie.pociąg(obrazy, np. tablica (etykiety))

print 'Szkolenie zakończone… '

czcionka = cv2. FONT_

HERSHEY_SIMPLEXcap=cv2. VideoCapture(1) # Twoje urządzenie wideo

lastRes=''liczba=0

podczas (1):

_, ramka=całk.odczyt()

szary=cv2.cvtColor(ramka, cv2. COLOR_BGR2GRAY)

twarze = twarzCascade.detectMultiScale(szary, 1,3, 5)

liczba+=1

dla (x, y, w, h) w ścianach:

cv2.rectangle(ramka, (x, y), (x+w, y+h), (255, 0, 0), 2)

if count>20: res=names[recognizer.predict(szary[y:y+h, x:x+w])-1]

if res!=lastRes:

lastRes=res

drukuj lastRes

ser.write(lastRes)

liczba=0

przerwa

cv2.imshow('ramka', ramka)

k = 0xFF & cv2.waitKey(10)

jeśli k == 27:

przerwa

cap.zwolnienie()

ser.zamknij()

cv2.zniszczWszystkieOkna()

Krok 4: Uruchamianie kodu

Uruchamianie kodu
Uruchamianie kodu

1. Pobierz pliki załączone w poprzednim kroku

2. skopiuj szare zdjęcia (6 obrazów/próbek…..) do folderu zestawu danych

1. Tom Cruise 1_1, 1_2, 1_3, 1_4, 1_5, 1_6 (numer obrazu zestawu danych dla bardziej otwartego folderu zestawu danych)

2. Brad Pitt-2_1, 2_2, 2_3, 2_4, 2_5, 2_6

3. Lew-3_1, 3_2, 3_3, 3_4, 3_5, 3_6

4. Ironman4_1, 4_2, 4_3, 4_4, 4_5, 4_6

podobnie jak powyżej możesz dodać etykiety dla odpowiednich osób,

więc jeśli pi wykryje jakąkolwiek twarz spośród 1_1, 1_2, 1_3, 1_4, 1_5, 1_6, to został oznaczony jako Tom Cruise, więc zachowaj ostrożność podczas przesyłania zdjęć………………

a następnie podłącz arduino do raspberry Pi i dokonaj zmian w koderze main.py = serial. Serial('/dev/ttyACM0', 9600, timeout=1) 3. wstaw wszystkie pobrane pliki (main.py, folder dataset, haarcascade_frontalface_default.xml w jednym folderze.)

3. Teraz otwórz terminal Raspi, uruchom swój kod przez "sudo python main.py"

Zalecana: