#python #facedetection #vscode #macosx #coding #video #opencv
Microsoft devrim niteliğinde olan vscode editörü ile gerçekten platform bağımsız yazılım geliştirme olayına çok iyi bir alternatif getirmiş durumda. Mac os işletim sistemi ile gayet başarılı çalışıyor.
Öncelikle kullanacağım görsel kütüphanenin adı OpenCV.
OpenCV (Açık Kaynak Görsel Kütüphane) , Intel tarafından 1999 yılında başlatılan popüler bir bilgisayarlı görsel kütüphanesidir ve BSD lisansı altında yayımlandığı için akademik projelerde ve ticari ürünlerde kullanılabiliyor kendileri.
OpenCV’nin barındırdığı algoritmalar:
- Eigenfaces (createEigenFaceRecognizer())
- Fisherfaces (createFisherFaceRecognizer())
- Local Binary Patterns Histograms (createLBPHFaceRecognizer())
Kullanacağımız diğer modül ise face_recognition; (Kurulum ile ilgili detaylı bilgi için: https://github.com/ageitgey/face_recognition)
Face Recognition’ın barındırdığı algoritmalar:
- Find faces in pictures
- Find and manipulate facial features in pictures
- Digital make-up
- Identify faces in pictures
- Real-time face recognition (Biz bu özelliği kullanacağız)
Real-time face recognition
Real-time face recognition ile python içerisinde kamerayı açacağız ve anlık olarak yüz tarama yapacağız. Realtime olarak sizi tanıyabilmesi için bir veri ile karşılaştırıyor olması ve sizi önceden biliyor olması gerekiyor. Bunu da kişiye ait bir profil resmi uygulamamıza import ederek halledeceğiz.
Yani programa kendimizi tanıtıyoruz;
=> Mennan Sevim
Sonraki aşamada yazacağımız uygulama, sisteme tanıtılan “Mennan Sevim” resmine ait yüzü kamerada arıyor ve bulduğu zaman gerekli işlemleri yaptırabiliyoruz.
Kodlama kısmına geçersek işleyiş şöyle: //face_recognition ve opencv kütüphanelerini import edelim
# face_recognition ve opencv kütüphanelerini import ederek başlıyoruz import face_recognition import cv2 # opencv metodu olan VideoCapture ile webcam'den görüntü almayı başlatıyoruz // 0 default webcam video_capture = cv2.VideoCapture(0) # Yukarıdaki "mennan sevim" resmini yüklüyoruz ve encoding bilgisini alıyoruz mennan_image = face_recognition.load_image_file("mennan.jpg") mennan_face_encoding = face_recognition.face_encodings(mennan_image)[0] # Encoding ve açıklama kısmını burada tanımlıyoruz, birden fazla tanımlayabiliriz known_face_encodings = [mennan_face_encoding]. known_face_names = ["Mennan Sevim"] face_locations = [] face_encodings = [] face_names = [] process_this_frame = True while True: # Videodan anlık bir kare yakalıyoruz ret, frame = video_capture.read() # Aldığımız kareyi 1/4 oranında küçültüyoruz ve bu daha hızlı sonuç vermeyi sağlıyor small_frame = cv2.resize(frame, (0, 0), fx=0.25, fy=0.25) # BGR(opencv) türündeki resmi RGB(face_recognition) formatına çeviriyoruz rgb_small_frame = small_frame[:, :, ::-1] if process_this_frame: # Uyumlu tüm yüzlerin lokasyonlarını bulan kodlar face_locations = face_recognition.face_locations(rgb_small_frame) face_encodings = face_recognition.face_encodings(rgb_small_frame, face_locations) face_names = [] for face_encoding in face_encodings: # Eğer eşleşen yüzleri topla matches = face_recognition.compare_faces(known_face_encodings, face_encoding) name = "Bilinmeyen" # Eşleşme bulunduysa if True in matches: first_match_index = matches.index(True) name = known_face_names[first_match_index] face_names.append(name) process_this_frame = not process_this_frame # Sonuçları göster for (top, right, bottom, left), name in zip(face_locations, face_names): top *= 4 right *= 4 bottom *= 4 left *= 4 # Yüzü çerçeve içerisine al cv2.rectangle(frame, (left, top), (right, bottom), (0, 0, 255), 2) # "Mennan Sevim" etiketini oluştur cv2.rectangle(frame, (left, bottom - 35), (right, bottom), (0, 0, 255), cv2.FILLED) font = cv2.FONT_HERSHEY_DUPLEX cv2.putText(frame, name, (left + 6, bottom - 6), font, 1.0, (255, 255, 255), 1) # Oluşan çerçeveyi ekrana yansıt c v2.imshow('Video', frame) # Çıkış için 'q' if cv2.waitKey(1) & 0xFF == ord('q'): break # Kamerayı kapat video_capture.release() cv2.destroyAllWindows()