İçindekiler:

Opencv Yüz Tanıma: 4 Adım
Opencv Yüz Tanıma: 4 Adım

Video: Opencv Yüz Tanıma: 4 Adım

Video: Opencv Yüz Tanıma: 4 Adım
Video: OpenCv – C++ dersleri – Bölüm 3 – Yüz Tanıma 2024, Temmuz
Anonim
Opencv Yüz Tanıma
Opencv Yüz Tanıma

Yüz tanıma, günümüzde akıllı telefonlar, birçok elektronik alet gibi birçok uygulamada oldukça yaygın bir şey. Bu tür bir teknoloji, Raspberry Pi gibi bazı gömülü gömülü SOC platformlarını ve açık kaynaklı bilgisayar vizyonunu kullanan birçok algoritma ve araç vb. içerir. OpenCV gibi kütüphaneler sayesinde, artık güvenlik sistemleri gibi kendi uygulamalarınıza yüz tanıma ekleyebilirsiniz.

Bu projede sizlere Raspberry Pi kullanarak yüz tanıma nasıl yapılır onu anlatacağım ve kişinin ismini göstermek için arduino+Lcd kullandık..

Adım 1: İhtiyacınız Olan Şeyler

İhtiyacın olan şeyler
İhtiyacın olan şeyler

1. Ahududu PI

2. ARDUINO UNO / NANO

3.16x2 LCD EKRAN

4. RASPI-KAMERA / WEB kamerası (daha iyi sonuçlar için web kamerasını tercih ederim)

Adım 2: Opencv-Giriş ve Kurulum

Opencv-Giriş ve Kurulum
Opencv-Giriş ve Kurulum

OpenCV (açık kaynak bilgisayarlı görü kitaplığı) çok kullanışlı bir kitaplıktır - metin tanıma, yüz tanıma, nesne algılama, derinlik haritaları oluşturma ve makine öğrenimi gibi birçok yararlı özellik sağlar.

Bu makale, Raspberry Pi'de nesne algılama ve diğer projeler yaparken kullanışlı olacak Opencv ve diğer kitaplıkların nasıl kurulacağını gösterecektir. Oradan nesne tanıma ve makine öğrenimi projesi yürüterek görüntü ve video işlemlerinin nasıl yapıldığını öğreneceğiz. Özellikle, bir görüntüdeki yüzleri algılamak için basit bir kod yazacağız.

OpenCV nedir?

OpenCV, açık kaynaklı bir bilgisayarlı görü ve makine öğrenimi yazılım kütüphanesidir. OpenCV, hem akademik hem de ticari kullanım için ücretsiz hale getiren bir BSD lisansı altında yayınlanmıştır. C++, Python ve Java arayüzlerine sahiptir ve Windows, Linux, Mac OS, iOS ve Android'i destekler. OpenCV, hesaplama verimliliği ve gerçek zamanlı uygulamalara güçlü bir odaklanma için tasarlanmıştır.

Raspberry Pi'ye OpenCV Nasıl Kurulur?

OpenCV'yi kurmak için Python'un kurulu olması gerekiyor. Raspberry Pis, Python ile önceden yüklenmiş olduğundan, OpenCV'yi doğrudan kurabiliriz.

Raspberry Pi'nizin güncel olduğundan emin olmak ve Raspberry Pi'nizde kurulu paketleri en son sürümlere güncellemek için aşağıdaki komutları yazın.

sudo apt-get güncellemelerisudo apt-get yükseltmesi

Raspberry Pi'nize OpenCV için gerekli paketleri kurmak için terminalde aşağıdaki komutları yazın.

sudo apt kurulumu libatlas3-base libsz2 libharfbuzz0b libtiff5 libjasper1 libilmbase12 libopenexr22 libilmbase12 libgstreamer1.0-0 libavcodec57 libavformat57 libavutil55 libswscale4 libqtgui4 libqt4-test

Raspberry Pi'nize Python 3 için OpenCV 3'ü kurmak için aşağıdaki komutu yazın, pip3 bize OpenCV'nin Python 3 için kurulacağını söyler.

sudo pip3 opencv-contrib-python libwebp6'yı kurun

Şimdi, OpenCV kurulmalıdır.

(eğer herhangi bir hata oluştuysa: yine de aşağıdaki bağlantıyı takip ederek yapabilirsiniz

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

Şimdi acele etmeyin, doğru kurulup kurulmadığını kontrol etmemiz gerekiyor.

Opencv'nizi şu şekilde test edin:

1. terminalinize gidin ve "python" yazın

2. ardından "cv2'yi içe aktar" yazın.

3.sonra "cv2._version_" yazın.

sonra bu kütüphaneleri kurun

pip3 python-numpy yükleyin

pip3 python-matplotlib'i kurun

Bir görüntüdeki yüzleri algılamak için kodu test edin:

cv2'yi içe aktar

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

resim = cv2.imread('dosya adınız') #example cv2.imread('home/pi/Desktop/filename.jpg')

resimdeki kişilerin yüzlerinde kare şeklinde kutular oluşmuş gibi çıktı alacaksınız.

3. Adım: Gerçek Zamanlı Bir Videoda Yüz Tespiti ve Tanınması

cv2'yi içe aktar

numpy'yi np olarak içe aktar

işletim sistemini içe aktar

seriyi içe aktar

ser = serial. Serial('/dev/ttyACM0', 9600, timeout=1) # /dev/ttyACM0 sizin durumunuzda değişebilir, arduino'ya bağlıdır

cascadePath = "haarcascade_frontalface_default.xml"

faceCascade = cv2. CascadeClassifier(cascadePath)

tanıyıcı=cv2.face.createLBPHFaceRecognizer()

resimler=

etiketler=

os.listdir('Dataset') içindeki dosya adı için:

im=cv2.imread('Veri kümesi/'+dosya adı, 0)

resimler.append(im)

labels.append(int(dosyaadı.split('.')[0][0]))

#dosya adını yazdır

name_file=open('labels.txt')

isimler=isimler_dosyası.read().split('\n')

tanıyıcı.tren(görüntüler, np.array(etiketler))

'Eğitim Tamamlandı' yazdırın… '

yazı tipi = cv2. FONT_

HERSHEY_SIMPLEXcap=cv2. VideoCapture(1) # video cihazınız

lastRes=''count=0

süre(1):

_, çerçeve=başlık.read()

gri=cv2.cvtColor(çerçeve, cv2. COLOR_BGR2GRAY)

yüzler = faceCascade.detectMultiScale(gri, 1.3, 5)

say+=1

yüzlerde (x, y, w, h) için:

cv2.dikdörtgen(çerçeve, (x, y), (x+w, y+h), (255, 0, 0), 2)

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

eğer res!=lastRes:

lastRes=res

sonRes'i yazdır

ser.write(sonRes)

sayı = 0

kırmak

cv2.imshow('çerçeve', çerçeve)

k = 0xFF & cv2.waitKey(10)

k == 27 ise:

kırmak

cap.release()

ser.kapat()

cv2.destroyAllWindows()

Adım 4: Kodu Çalıştırma

Kodu Çalıştırmak
Kodu Çalıştırmak

1. Önceki adımda eklenen dosyaları indirin

2. gri fotoğraflarınızı (6 resim/örnek…..) veri kümesi klasörünüze kopyalayın

1. Tom Cruise 1_1, 1_2, 1_3, 1_4, 1_5, 1_6 (daha fazla açık veri seti klasörü için veri seti görüntü numarası)

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

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

4. Demir Adam4_1, 4_2, 4_3, 4_4, 4_5, 4_6

yukarıdaki gibi ilgili kişiler için etiketler ekleyebilirsiniz,

yani pi 1_1, 1_2, 1_3, 1_4, 1_5, 1_6 arasında herhangi bir yüz algılarsa, o zaman Tom Cruise olarak etiketlenmiştir, bu yüzden fotoğrafları yüklerken lütfen dikkatli olun……………….

ve ardından arduino'nuzu ahududu Pi'nize bağlayın ve main.py kodlayıcıda değişiklik yapın = serial. Serial('/dev/ttyACM0', 9600, timeout=1) 3. İndirilen tüm dosyaları (main.py, dataset klasörü) koyun, tek bir klasörde haarcascade_frontalface_default.xml.)

3. Şimdi Raspi-terminalini açın, kodunuzu "sudo python main.py" ile çalıştırın

Önerilen: