PHP ile Yüz Tanıma Sistemi

Bu yazımızda OpenCV ve PHP Facedetect alt yapısını kullanarak PHP ile yüz tanıma sistemi geliştirmeyi anlatacağız. Geliştireceğimiz yüz tanıma sistemi bir fotoğraftaki yüzleri tespit edip kutucuk içine alacak.

Yüz Tanıma Sistemi İçin Gerekli Olanlar

  • Linux sistem
  • PHP
  • Apache
  • GD Kütüphanesi
  • OpenCV
  • PHP Facedetect eklentisi

PHP facedetect eklentisi çok basit bir eklentidir. Bütün yapmanız gereken face_detect() fonksiyonunu çağırıp kullanmaktır. Bu fonksiyon resmimizde yüz bulunan yerlerin koordinatlarını döndürür. face_count() fonksiyonu ise resimde kaç adet yüz bulunduğunu sayar ve sonuç olarak döndürür.

Kurulum İşlemleri

OpenCV kurulumu için daha önce bir yazı yazmıştık. Bu yazıdakileri uygulayarak OpenCV’yi bilgisayarınıza kurabilirsiniz. OpenCV kurulumu tamamlandıktan sonra PHP için Facedetect eklentisini kuralım. Facedetect eklentisini github linkinden zip olarak indirip kurulum yapacağımız klasöre çıkartalım. Uçbirimi açıp kurulum klasörüne eriştikten sonra aşağıdaki komutları takip edelim.

apt-get install php5-dev

Facedetect Kurulumu

phpize && configure && make && make install

Bu komutlardan sonra php.ini dosyamızı açıp aşağıdaki kodu ekleyelim.

xtension=facedetect.so

Buraya kadar yapılanlarda hata yoksa kurulum işlemleri tamamlanmış demektir. Apache’yi yeniden başlattıktan sonra yüz tanıma sistemi kodlarımıza geçelim.

Yüz Tanıma Sistemi

PHP kodlarımızı çalıştırmadan önce /usr/local/share/opencv/haarcascades klasöründeki bütün XML dosyalarını programımızı çalıştıracağımız dizine kopyalamalıyız.

<?php

$total= face_count('test.jpg','haarcascade_frontalface_alt.xml');

$coord= face_detect('test.jpg','haarcascade_frontalface_alt.xml');

print_r($coord);

?>

Yukarıda örnek kodları görebilirsiniz. Kullandığımız fonksiyonların işlevini yazımızın başında açıklamıştık. Dikkat etmemiz gereken nokta XML dosyalarımızdır. Eğer fonksiyonlarımıza verdiğimiz XML inputları yanlışsa fonksiyon false değer döndürür. Yüz tanıma işlemi başarıyla tamamlandığında bize bulunan yüzlerin koordinatlarını sonuç olarak döndürür. Biz de GD kütüphanesi yardımıyla bulduğumuz yüzü işaretleyebiliriz. Bunu aşağıdaki kodlarda görebilirsiniz.

<?php

function LoadJpeg($imgname)

{

 $im = @imagecreatefromjpeg($imgname);

 if (!$im) {

 $im  = imagecreate(150, 30);

 $bgc = imagecolorallocate($im, 255, 255, 255);

 $tc  = imagecolorallocate($im, 0, 0, 0);

 imagefilledrectangle($im, 0, 0, 150, 30, $bgc);

 imagestring($im, 1, 5, 5, "Error loading $imgname", $tc);

 }

 return $im;

}

$total= face_count($_GET['file'],'haarcascade_frontalface_alt.xml');

$ord= face_detect($_GET['file'],'haarcascade_frontalface_alt.xml');

$im = LoadJpeg($_GET['file']);

$pink = imagecolorallocate($im, 255, 105, 180);

if(count($ord) > 0) {

foreach ($ord as $arr) {

imagerectangle($im,$arr['x'] ,$arr['y'] , $arr['x']+$arr['w'],

$arr['y']+$arr['h'], $pink);

}

}

header('Content-Type: image/jpeg');

imagejpeg($im);

imagedestroy($im);

?>

PHP ile Yüz Tanıma SistemiPHP ile Yüz Tanıma SistemiYukarıdaki örneğe ek olarak göz, vücut tanıma gibi örnekler de yapılabilir. Bunun için fonksiyon inputlarında kullandığınız XML dosyasını değiştirmemiz yeterlidir. Geliştirilmiş halinin örneğini yan tarafta görebilirsiniz. Bu yazımızda PHP ile yüz tanıma sistemi geliştirmeyi anlattık. İleriki yazılarda OpenCV ve facedetect kullanamdan tamamen bir algoritmaya dayalı yüz tanıma sistemi anlatacağız. Böylece kendi algoritmanızı hazırlayarak daha farklı sistemler geliştirebilirsiniz. Sorularınızı sayfanın altında bulunan yorum bölümünden sorabilirsiniz.

Bir önceki yazımız olan Medoo ile Veritabanından Veri Çekme başlıklı makalemizde Medoo, MySQL ve Veritabanı hakkında bilgiler verilmektedir.

About This Author

Uzun yıllardır yazılım ile uğraşıyorum. PHP ile başladığım yazılım hayatıma şu an PHP'nin yanında Swift ve Python ile devam ediyorum. Bu güne kadar bir çok proje geliştirdim ve yeni projeler geliştirmeye de devam ediyorum. Bu sitede yazılımseverlere faydalı bilgiler vermeye, yazılım geliştirmeye, öğrendiklerimi paylaşmaya, yeni başlayanlara yol göstermeye ve onlara yardımcı olmaya çalışıyorum.

2 Comments

You can post comments in this post.


  • Paylaştığınız için teşekkürler

    php tasarımı 2 sene ago Reply


  • Güzel ve başarılı konular ilminize sağlık =)

    Dursun 12 ay ago Reply


Post A Reply