İçindekiler:
- Adım 1: Anaconda'yı yükleyin
- Adım 2: Açık CV Paketini İndirin
- 3. Adım: Çevresel Değişkenleri Ayarlayın
- 4. Adım: Onaylamak için Test Edin
- Adım 5: Yüz Algılama için Kod Yapın
- Adım 6: Veri Kümesi Oluşturmak için Kod Yapın
- Adım 7: Tanıyıcıyı Eğitmek için Kod Yapın
- Adım 8: Yüzleri ve Sonucu Tanımak için Kod Yapın
Video: Yüz Algılama+Tanıma: 8 Adım (Resimlerle)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:21
Bu, bir kameradan OpenCV ile yüz tanıma ve tanıma çalıştırmanın basit bir örneğidir. NOT: BU PROJEYİ SENSÖR YARIŞMASI İÇİN YAPTIM VE KAMERAYI YÜZLERİ İZLEMEK VE TANIMAK İÇİN SENSÖR OLARAK KULLANDIM. O halde Hedefimiz Bu oturumda, 1. Anaconda'yı kurun 2. Open CV Paketini İndirin 3. Çevresel Değişkenleri Ayarlayın 4. Onaylamak için Test 5. Yüz algılama için kod yapın 6. Veri seti oluşturmak için kod yapın 7. Tanıyıcıyı eğitmek için kod yapın 8. Yüzleri tanımak için kod yapın &Sonuç.
Adım 1: Anaconda'yı yükleyin
Anaconda aslında güzel paketlenmiş bir Python IDE'dir ve NumPy, Pandas, IPython Notebook vb. gibi tonlarca kullanışlı paketle birlikte gönderilir. Bilimsel toplulukta her yerde tavsiye ediliyor gibi görünüyor. Yüklemek için Anaconda'ya göz atın.
Adım 2: Açık CV Paketini İndirin
İlk olarak, OpenCV paketinin tamamını indirmek için resmi OpenCV sitesine gidin. Beğendiğiniz bir sürümü seçin (2.x veya 3.x). Python 2.x ve OpenCV 2.x üzerindeyim - temel olarak OpenCV-Python Öğreticileri bu şekilde kurulur/tabanlıdır.
Benim durumumda, paketi (esas olarak bir klasör) doğrudan F sürücüme çıkardım. (F:\opencv).
3. Adım: Çevresel Değişkenleri Ayarlayın
cv2.pyd dosyasını kopyalayıp yapıştırın
Anaconda Site paketleri dizini (örneğin, benim durumumda F:\Program Files\Anaconda2\Lib\site-packages) içe aktarabileceğiniz Python paketlerini içerir. Amacımız cv2.pyd dosyasını bu dizine kopyalayıp yapıştırmaktır (böylece import cv2'yi Python kodlarımızda kullanabiliriz.).
Bunu yapmak için cv2.pyd dosyasını kopyalayın…
Bu OpenCV dizininden (başlangıç kısmı makinenizde biraz farklı olabilir):
# Python 2.7 ve 64-bit makine: F:\opencv\build\python\2.7\x64# Python 2.7 ve 32-bit makine: F:\opencv\build\python\2.7\x84
Bu Anaconda dizinine (başlangıç kısmı makinenizde biraz farklı olabilir):
F:\Program Dosyaları\Anaconda2\Lib\site paketleri
Bu adımı gerçekleştirdikten sonra artık Python kodunda import cv2'yi kullanabileceğiz. AMA, FFMPEG'nin (video codec bileşeni) çalışması için (videoları işlemek gibi şeyler yapmamızı sağlamak için) hala biraz daha çalışmamız gerekiyor.
"Bilgisayarım"a (veya Windows 8.1'de "Bu PC") sağ tıklayın -> Özellikler'e sol tıklayın -> "Gelişmiş" sekmesine sol tıklayın -> "Ortam Değişkenleri…" düğmesine sol tıklayın. Yeni bir Kullanıcı Değişkeni ekleyin OpenCV'ye işaret etmek için (32-bit sistem için x86 veya 64-bit sistem için x64.) Şu anda 64-bit bir makinedeyim.
32 bitOPENCV_DIRC:\opencv\build\x86\vc12
64-bitOPENCV_DIRC:\opencv\build\x64\vc12
Kullanıcı Değişkeni YOLU'na %OPENCV_DIR%\bin ekleyin.
Örneğin, PATH kullanıcı değişkenim şuna benziyor…
Önce:
F:\Kullanıcılar\Johnny\Anaconda;C:\Kullanıcılar\Johnny\Anaconda\Scriptler
Sonrasında:
F:\Users\Johnny\Anaconda;C:\Users\Johnny\Anaconda\Scripts;%OPENCV_DIR%\bin
İşte bu kadarız! FFMPEG kullanıma hazır!
4. Adım: Onaylamak için Test Edin
Bunları şimdi Anaconda'da yapıp yapamayacağımızı test etmemiz gerekiyor (Spyder IDE aracılığıyla):
- OpenCV paketini içe aktar
- FFMPEG yardımcı programını kullanın (videoları okumak/yazmak/işlemek için)
Test 1: OpenCV'yi içe aktarabilir miyiz?
Anaconda'nın artık OpenCV-Python paketini (yani cv2) içe aktarabildiğini doğrulamak için, bunları IPython Konsolunda yayınlayın:
cv2'yi içe aktar
cv2._versiyon_ yazdır
cv2 paketi hatasız bir şekilde içe aktarılırsa ve cv2 sürümü yazdırılırsa, hepimiz iyiyiz!
Test 2: FFMPEG codec bileşenini kullanabilir miyiz?
Bir örnek yerleştirin
input_video.mp4
Bir dizindeki video dosyası. Şunları yapıp yapamayacağımızı test etmek istiyoruz:
- bu.mp4 video dosyasını okuyun ve
- yeni bir video dosyası yazın (.avi veya.mp4 vb. olabilir)
Bunu yapmak için bir test python koduna ihtiyacımız var, buna test.py diyoruz. Örnekle aynı dizine yerleştirin
input_video.mp4
dosya.
Bu nedir
test.py
(Not: Pete'in ve Warren'ın yorum alanındaki önerilerine çok teşekkürler - Orijinal test kodumu onunkiyle değiştirdim - lütfen kendiniz test edin ve bunun daha iyi çalışıp çalışmadığını bize bildirin):
cv2'yi içe aktar
cap = cv2. VideoCapture("input_video.mp4") print cap.isOpened() # True = videoyu başarıyla oku. Yanlış - videoyu okuyamama. fourcc = cv2. VideoWriter_fourcc(*'XVID') out = cv2. VideoWriter("output_video.avi", fourcc, 20.0, (640, 360)) print out.isOpened() # True = videoyu başarıyla yazdır. Yanlış - video yazamadı. cap.release() out.release()
Bu test ÇOK ÖNEMLİ. Video dosyalarını işlemek istiyorsanız, Anaconda / Spyder IDE'nin FFMPEG (video codec bileşeni) kullanabileceğinden emin olmanız gerekir. Çalıştırmak günlerimi aldı. Ama umarım çok daha az zaman alır!:)Not: Anaconda Spyder IDE'yi kullanırken çok önemli bir ipucu daha. Mevcut Çalışma Dizinini (CWD) kontrol ettiğinizden emin olun!!!
Adım 5: Yüz Algılama için Kod Yapın
Hedef
Bu oturumda,
- Haar Özellik Tabanlı Kademeli Sınıflandırıcıları kullanarak yüz algılamanın temellerini göreceğiz
- Aynı şeyi göz algılama vb. için genişleteceğiz
OpenCV'de Haar Kademeli Algılama
Burada algılama ile ilgileneceğiz. OpenCV zaten yüz, gözler, gülümseme vb. için önceden eğitilmiş birçok sınıflandırıcı içerir. Bu XML dosyaları opencv/data/haarcascades/ klasöründe saklanır. OpenCV ile yüz ve göz dedektörü oluşturalım. Öncelikle gerekli XML sınıflandırıcılarını yüklememiz gerekiyor. Ardından giriş resmimizi (veya videoyu) gri tonlamalı modda yükleyin VEYA kamera kullanabiliriz (Gerçek zamanlı yüz algılama için)
numpy'yi np olarak içe aktar
import cv2 face_cascade = cv2. CascadeClassifier('F:/Program Files/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml') eye_cascade = cv2. CascadeClassifier('F:/Program Files/opencv/sources/data/haar.xml') cap = cv2. VideoCapture(0)while 1: ret, img = cap.read() grey = cv2.cvtColor(img, cv2. COLOR_BGR2GRAY) yüzler = face_cascade.detectMultiScale(gray, 1.5, 5) for (x, y, w, h) yüzlerde: cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2) roi_gray = grey[y:y +h, x:x+w] roi_color = img[y:y+h, x:x+w] gözler = eye_cascade.detectMultiScale(roi_gray) için (ex, ey, ew, eh) gözlerde: cv2.rectangle(roi_color, (ex, ey), (ex+ew, ey+eh), (0, 255, 0), 2) "bulundu" +str(len(yüzler)) +" yüz(ler)" cv2.imshow ('img', img) k = cv2.waitKey(30) & k == 27 ise 0xff: break cap.release() cv2.destroyAllWindows()
Adım 6: Veri Kümesi Oluşturmak için Kod Yapın
Yüz tanıma yapıyoruz, bu yüzden bazı yüz resimlerine ihtiyacınız olacak! Kendi veri kümenizi oluşturabilir veya mevcut yüz veritabanlarından biriyle başlayabilirsiniz, https://face-rec.org/databases/ size güncel bir genel bakış sunar. Üç ilginç veri tabanı vardır (açıklamanın bölümleri https://face-rec.org'dan alıntılanmıştır):
- AT&T Yüz Veritabanı
- Yale Yüz Veritabanı A
- Genişletilmiş Yale Yüz Veritabanı B
BURADA kendi veri setimi kullanıyorum…. aşağıda verilen kod yardımıyla:
numpy'yi np olarak içe aktar
import cv2 face_cascade = cv2. CascadeClassifier('F:/Program Files/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml') cap = cv2. VideoCapture(0) id = raw_input('kullanıcı kimliğini girin') sampleN=0; while 1: ret, img = cap.read() gray = cv2.cvtColor(img, cv2. COLOR_BGR2GRAY) yüzler = face_cascade.detectMultiScale(gray, 1.3, 5) için (x, y, w, h): örnekN =örnekN+1; cv2.imwrite("F:/Program Files/projects/face_rec/facesData/User."+str(id)+ "." +str(sampleN)+ ".jpg", gri[y:y+h, x: x+w]) cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2) cv2.waitKey(100) cv2.imshow('img', img) cv2.waitKey(1) eğer sampleN > 20 ise: break cap.release() cv2.destroyAllWindows()
Adım 7: Tanıyıcıyı Eğitmek için Kod Yapın
Eğitim setini hazırlamak için işlevi oluşturun
Şimdi bir fonksiyon tanımlayacağız.
getImagesWithID(yol)
giriş argümanı olarak görüntü veritabanına giden mutlak yolu alır ve biri algılanan yüzleri ve diğeri o yüz için karşılık gelen etiketi içeren 2 listesinin demetini döndürür. Örneğin, yüzler listesindeki i. dizin veritabanındaki 5. kişiyi temsil ediyorsa, etiketler listesinde karşılık gelen i. konumun değeri 5'e eşittir.
Şimdi 6. adımda oluşturulan veri kümesi yüzlerini aşağıda verilen kod yardımıyla.yml dosyasına dönüştürün:
işletim sistemini içe aktar
numpy'yi np olarak içe aktar PIL'den cv2'yi içe aktar Görüntü # Yüz tanıma için LBPH Yüz Tanıma tanıyıcısını kullanacağız = cv2.createLBPHFaceRecognizer(); path="F:/Program Files/projects/face_rec/facesData" def getImagesWithID(path): imagePaths = [os.path.join(path, f) for f in os.listdir(path)] # print image_path #getImagesWithID(path) yüzler = Kimlikler = imagePaths içindeki imagePath için: # Resmi okuyun ve gri tonlamalı facelere dönüştürünImg = Image.open(imagePath).convert('L') faceNP = np.array(facesImg, 'uint8') # Resmin etiketini alın ID= int(os.path.split(imagePath)[-1].split(".")[1]) # Resimdeki yüzü algılayın face.append(faceNP) IDs.append (ID) cv2.imshow("Eğitim için yüzler ekleme", faceNP) cv2.waitKey(10) return np.array(ID'ler), yüzler Kimlikler, yüzler = getImagesWithID(yol) tanıyıcı.train(yüzler, Kimlikler) tanıyıcı.save ("F:/Program Files/projects/face_rec/faceREC/trainingdata.yml") cv2.destroyAllWindows()
bu kodu kullanarak tüm yüz veri kümesi tek bir.yml dosyasına dönüştürülür…..path konumu ("F:/Program Files/projects/face_rec/faceREC/trainingdata.yml") olur
Adım 8: Yüzleri ve Sonucu Tanımak için Kod Yapın
Guyzz bu, web kameranızın yardımıyla yüzleri tanımak için kod oluşturabileceğimiz son adımdır BU ADIMDA YAPILACAK İKİ İŞLEM VARDIR…. 1. videoyu kameradan yakalama 2..yml dosyanızla karşılaştırın
numpy'yi npimport cv2 olarak içe aktar face_cascade = cv2. CascadeClassifier('F:/Program Files/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml') cap = cv2. VideoCapture(0) rec = cv2.createLBPHFaceRecognizer rec.load("F:/Program Files/projects/face_rec/faceREC/trainingdata.yml") id=0 font=cv2.cv. InitFont(cv2.cv. CV_FONT_HERSHEY_COMPLEX_SMALL, 5, 1, 0, 4) iken 1: ret, img = cap.read() gri = cv2.cvtColor(img, cv2. COLOR_BGR2GRAY) yüzler = face_cascade.detectMultiScale(gri, 1.5, 5) (x, y, w, h) için yüzler: cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2) id, conf=rec.tahmin(gri[y:y+h, x:x+w]) if(id==2): id="alok" ise id==1 ise: id="alok" ise id==3: id="anjali" ise id==4: id="Gaurav" ise id= =5: id='rahul' ise id==6: id="akshay" cv2.cv. PutText(cv2.cv.fromarray(img), str(id), (x, y+h), font, 255) cv2.imshow('img', img) if cv2.waitKey(1) == ord('q'): break cap.release()
cv2.destroyAllWindows()
ve sonunda sonuç gözlerinizin önüne gelecek…… ayrıca zip dosyasını bağlantının altından da indirebilirsiniz:Kodları indirmek için buraya tıklayın Yani, bu talimatta OpenCV kullanarak yüz tanıma + tanıma görevini gerçekleştirdik….. bu öğreticiyi beğen….. plzzz bana abone ol ve bana oy ver…..teşekkürler arkadaşlar:)
Önerilen:
Abellcadabra (Yüz Tanıma Kapı Kilit Sistemi): 9 Adım
Abellcadabra (Yüz Tanıma Kapı Kilit Sistemi): Karantina sırasında etrafta yatarak, ev kapısı için yüz tanıma sistemi kurarak zamanı öldürmenin bir yolunu bulmaya çalıştım. Ben ona Abellcadabra adını verdim - bu, sadece zili aldığım kapı zili ile sihirli bir ifade olan Abracadabra'nın birleşimidir. ÇOK KOMİK
Gizli Bölmeli Yüz Tanıma Aynası: 15 Adım (Resimli)
Gizli Bölmeli Yüz Tanıma Aynası: Hikayelerde, filmlerde ve benzerlerinde kullanılan, sürekli yaratıcı gizli bölmeler her zaman ilgimi çekmiştir. Bu yüzden, Gizli Bölme Yarışmasını gördüğümde, bu fikri kendim denemeye ve bir pencere açan sıradan görünümlü bir ayna yapmaya karar verdim
Opencv Yüz Algılama, Eğitim ve Tanıma: 3 Adım
Opencv Yüz Tespiti, Eğitimi ve Tanıma: OpenCV, bulanıklaştırma, görüntü harmanlama, görüntü iyileştirme, video kalitesi, eşikleme vb. gibi temel görüntü işleme görevlerini gerçekleştirmek için çok popüler olan açık kaynaklı bir bilgisayarlı görü kitaplığıdır. Görüntü işlemeye ek olarak, kanıtlıyor
Yüz Tanıma ile Kapı Zili: 7 Adım (Resimlerle)
Yüz Tanımalı Kapı Zili: Motivasyon Son zamanlarda ülkemde yaşlıları kendi evlerinde hedef alan bir soygun dalgası yaşandı. Ziyaretçiler onları bakıcı/hemşire olduklarına ikna ettiğinden, genellikle erişim, yolcuların kendileri tarafından verilir. Bilişim Teknoloji
Gerçek Zamanlı Yüz Tanıma: Uçtan Uca Bir Proje: 8 Adım (Resimlerle)
Gerçek Zamanlı Yüz Tanıma: Uçtan Uca Bir Proje: OpenCV'yi keşfeden son eğitimimde OTOMATİK GÖRÜŞ NESNE İZLEME'yi öğrendik. Şimdi, aşağıda görebileceğiniz gibi, yüzleri gerçek zamanlı olarak tanımak için PiCam'imizi kullanacağız: Bu proje, bu harika "Açık Kaynak Bilgisayar Görme Kitaplığı" ile yapıldı