Python'da OpenCV kullanarak Yüz Tanıma Projesi

JooCyp

Yeni üye
1 Nis 2020
12
0
Hepinize merhabalar arkadaşlar,
Bugün sizlere yüz tanıma sistemiyle alakalı bilgi vereceğim.
Yüz tanıma projemiz için OpenCV (açık kaynaklı görsel kütüphane) kullandım.
Projemize bu kütüphaneyi eklemek için ;
Kod:
import cv2
yazmanız yeterlidir.
OpenCV'de Algoritmalar:
• EigenFaces
• FisherFaces
• Local Binary Patterns Histograms
şeklindedir.Kullandığımız diğer modül face_recognition.Bu modülü kolaylıkla projemize ekleyebiliriz.
Projeyi eklemek için :
Kod:
import face_recognition
yazmanız yeterlidir.

Yüz Tanıma Algoritmaları :
• Resimlerdeki yüzleri bulma
• Resimlerdeki yüz özelliklerini bulma ve değiştirme
• Dijital Makyaj
• Resimlerdeki yüzleri tanımlama
• Gerçek zamanlı yüz tanıma
Proje için ayrıca real-time face recognition algoritması kullanmıştır. Proje başlatıldığında, komut satırına yazdırır ve kişiyi görünüp görünmediğini bildirir ve ona yönlendirme yapar.Artısında tasarım yapmak size kalmış.:hosnut
Proje başlatıldığında kamera açılır ve kişi görünene kadar tarama yapar.Bu algoritma pythonda tkinter kütüphanesi ile yazılmıştır fakat işlem hızlılığı açısından ve ana algoritmayı çözmek açısından bu kütüphaneyi ve tkinter kütüphanesinin işlemlerini ben kaldırdım ve tüm işlemleri konsola yönlendirdim.
sizlere kodlamasını göstereyim :
Kod:
import PIL.Image
import PIL.ImageTk
import face_recognition
import cv2
import os
import threading
import sys
import time
import numpy

video_capture = cv2.VideoCapture(0)
known_face_encodings = []
known_face_names = []
global camera_is_open

def trainFaces():
    print("---- Training Başladı ----")
    for root, dirs, files in os.walk("./faces"):
        for filename in files:
            file_result = filename.split("_")
            known_face_names.append(file_result[0])
            image = face_recognition.load_image_file("faces/"+filename)
            image_face_encoding = face_recognition.face_encodings(image)[0]
            known_face_encodings.append(image_face_encoding)
            print("Name: " + file_result[0])
    print("---- Training Bitti ----")

def faceRecognitionFromPicture():

    ret, frame = video_capture.read()

    cvframe = frame
    #print("---- Recognized Started ----") sürekli yazdırır konsola.
    small_frame = cv2.resize(cvframe, (0, 0), fx=0.25, fy=0.25)
    small_rgb_frame = small_frame[:, :, ::-1]

    face_locatîons = face_recognition.face_ʟᴏᴄᴀᴛɪᴏɴs(small_rgb_frame)

    face_encodings = face_recognition.face_encodings(small_rgb_frame, face_ʟᴏᴄᴀᴛɪᴏɴs)

    face_names = []
    for face_encoding in face_encodings:
        matches = face_recognition.compare_faces(known_face_encodings, face_encoding)

        first_match_index = matches.index(True)
        name = known_face_names[first_match_index]
        face_names.append(name)

        if name.__contains__('.png'):
            return name
        else:
            return 'none'

    faceNames = ''.join(face_names)
    count = str(len(face_locatîons))
    locatîons = ','.join([str(i) for i in face_locatîons])

def openCamera():
    camera_is_open = False
    if camera_is_open == False:
        camera_is_open = True
        print("Kamera açıldı...")
        videoThread = threading.Thread(target=processCamera, args=())
        videoThread.start()


def processCamera():
    camera_is_open = True
    while camera_is_open:
        yuz_adi = faceRecognitionFromPicture()

        if yuz_adi in known_face_names :
            print("yüz tanindi")
            camera_is_open = False
        else:
            print("yüz taninmadi")
            faceRecognitionFromPicture()
    
    print('bitti')

trainFaces()
openCamera()

camera_is_open = False

Bu şekilde konsoldan yüz tanıma algoritmamızı çalıştırmış olduk.İsterseniz tekrar tkinter kütüphanemizi projeye kurup gerekli çalışmalarınızı yapabilirsiniz.


Yardım ve sorularınız için çekinmeden mesaj atabilirsiniz.
 
Moderatör tarafında düzenlendi:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.