Opencv Haar Cascade ile Yüz ve Göz Algılama ve Takip

talhakoc 16 Mart 2015OpenCv

Bir önceki dersimizde kendi oluşturduğumuz xmş dosyası ile nasıl nesne algılandığını işlemiştik. Opencv kütüphanesiyle beraber kullanıcılara sunulan bazı hazır sınıflandırıcılar mevcuttur. Bunlara yüz, göz, ağız, burun, sol göz, insan vücudu, insan üst bedeni gibi şeyler örnek verilebilir. Ancak bunlardan en kullanışlı olanları ve efektif sonuç verenleri yüz ve göz algılamada kullanılan xml dosyalarıdır. Bir önceki dersimizde xml dosyamızı kullandığımız projenin aynısını oluşturun. Dilerseniz o projenin kendisini de kullanabilirsiniz. Projeye ulaşmak için Opencv Ders 27(Haar Cascade xml Dosya Kullanımı) dersine göz atınız.

Projenizi oluşturduktan sonra opencv kütüphanesinin yüklü olduğu dizine girin ve opencv>source>data>haarcascades yolundaki klasörünü açın. İçindeki bütün dosyaları seçin ve projenizin bulunduğu dizine yapıştırın. Daha sonra solution explorer daki source file kısmına sağ tıklayarak add>existing item den bütün kopyaladığınız dosyaları ekleyin.

Eğer yüz algılamak istiyorsanız bunun için opencv kullanıcılarına 4 tane xml dosyası sunmuş. Bunlar haarcascade_frontalface_default.xml, haarcascade_frontalface_alt.xml, haarcascade_frontalface_alt2.xml , haarcascade_frontalface_alt_tree.xml dosyalarıdır. Bunların hepsi ortalama düzeyde yüz algılamaktadır ancak default olanı aralarında en etkin ve en hızlı olanıdır. Ancak şunu da belirtmeliyim ki sizin kendi eğiteceğiniz sınıflandırıcıya göre daha yavaştır. Muhtemelen eski algoritmalarda geliştirilmiş dosyalardır. Eğer yüz algılama yapacaksanız ve hızlı çalışmak istiyorsanız kendi sınıflandırıcınızı oluşturmanızda fayda olabilir.

haarcascade_eye.xml dosyası ile de efektif bir şekilde göz algılayabilirsiniz. Diğer göz algılama dosyaları bunun kadar başarılı sonuç vermemektedir. Aşağıda haarcascade_frontalface_default.xml ve haarcascade_eye.xml ile eğitilmiş örnekleri art arda göreceksiniz.

14 thoughts on “Opencv Haar Cascade ile Yüz ve Göz Algılama ve Takip

  1. Yukarıda gösterilen opencv ders 27 sekmesine tıklayın. O derste bulunan nesvek vektörü videoda görülen dikdörtgenin sol üst ve sağ alt koordinatlarını tutmaktadır. Bu koordinatların birleşimiyle dikdörtgen çizdirilmiştir.

  2. Merhabalar kod örneğini inceledim ve benim projeme yönelik olarak göz için geliştirmek istiyorum.Bu kod ile elde ettiğim sağ ve sol gözlerdeki dikdörtgeni nasıl diğer pencerelere aktarabilirim ve göz hareketleri ile mouse kontrolünü yapabilmem için bir bilginiz varmı?Teşekkürler

    1. Merhabalar, bu sistem sistemi yavaşlatmaktadır. Mouse için istediğiniz performansı alamayabilirsiniz. Bunun için nokta takibi gibi konuları araştırmanızı öneririm.

  3. hocam paylaşımlarınızın hepsini inceledim ve çok beğendim gayet açık ve güzel paylaşımlarda bulunmussunuz. Hepsini denedim ve çalıştırdım lakin tek takıldığım yer bu yüz tanıma. Sabatan beri uğraşıyorum ama bir türlü yüz tanıma yapamıyorum. Daha doğrusu bu yüz tanıma çizdirdiğimiz dikdörtgeni ben ekranda göremiyorum. BreakPointle satır satır kontrol ettim while içine giriyor ama for döngüsüne girmiyor sorun ne olabilir ? Yardımlarınız için şimdiden çok teşekkürler

    1. Merhabalar, Opencv Klasörünüzün dizininde bulunan xml dosyasını kopyalayıp kendi dizininize kopyalamanız gerekiyor. O kısmı atlamış olmalısınız.

    1. Merhaba, opencv dizininden belirtilen xml dosya isimlerini aratıp bulduğunuz dosyaları projenizi çalıştırdığınız exe uzantılı dosyanın bulunduğu dizine kopyalayın.

  4. Merhabalar ben vs 12 kullanıyorum.Opencv kütüphanesine stams kütüphanesi eklemek istiyorum ancak nasıl yapmam gerekiyor opencv yi yükledim vs ye derlemek istediğim kodda stasm_lib.h kütüphanesi var ve hata veriyor bu hatayı gidermek için o kütüphaneyi eklemem lazım nasıl yapmalıyım nasıl ekleyebilirim yardımcı olursanız cok sevinirim.

    1. Merhabalar, stasm_lib.h dosyasını kopyalayarak exe dosyanızın bulunduğu dizine kopyalamanız yeterli olacaktır.

  5. Merhabalar hocam,
    Yüz tanımaya başlayacağım ve eigen kütüphanesiyle oluşturdugum makriksle elimdeki fotoğrafın pikselini eşitlemem gerekiyor. Tam olarak ne yapmam gerekiyor opencv de? Yardımcı olur musunuz

    1. Merhabalar, resimleri gri seviyeye çevir ve her bir piksel(satır sütun) değeri için tek tek bütün resimleri geçerek toplayıp resim sayısına böl ve bunu matris olarak kaydet. Sonraki yapacağın işlem de bir sonraki resmi piksel piksel eigen matrisinden çıkararak eigen matrisine yakınlığını bulmak. Kolay gelsin.

  6. Merhaba,
    Ben bu sistemi arabalar üzerinde uygulamak istiyorum. Birden fazla arabanın tespit edilmesi sırasında herhangi bir hata almamak için ne yapmam gerekiyor? Ayrıca fotoğraf kullanmak istiyorum ama onda herhangi bir engel olmaz galiba, değil mi?

    1. Tabiki fotoğraf kullanabilirsiniz. Hata almamak için ard arda bir kaç fotoğraf için çalışmak akıllıca olacaktır.

      Kolay gelsin.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

WordPress spam blocked by CleanTalk.

Arama

Twitterda

© 2014 - Talha Koç. All Rights Reserved. Powered by Wordpress and Design by We Create Web Designs