Detektor Wajah PHP
Identifikasi letak wajah pada gambar menggunakan GD.
- Itu dibuat berdasarkan proyek mauricesvay/php-facedetection.
- Dengan porting ke js dan menerapkan perbaikan, saya menulis ulang kode PHP dengan error_reporting = E_ALL aman.
- Alasan lisensinya GPL-2.0 karena harus mempertahankan lisensi aslinya.
- Ada perbedaan besar dalam tingkat pengenalan tergantung pada ukuran gambar. Karena saya tidak memahami prinsip algoritme, saya tidak dapat meningkatkan tingkat pengenalan selain ukuran. Sebagian besar gambar yang digunakan dalam pengujian memiliki hasil terbaik ketika berukuran 281 piksel, jadi nilai defaultnya adalah 281.
- Karena memakan banyak resource, jika ingin menggunakannya untuk keperluan penyortiran thumbnail, lebih baik mendeteksinya pada saat upload dan menyimpan nilai arahnya bersama-sama, daripada menerapkannya secara real time.
$ php composer.phar require " crucifyer/facedetector-php " " dev-main "
$ detector = new Xeno Image FaceDetector (imagefile or gdresource or imagebinary);
$ face = $ detector -> FaceDetect ();
[ ' x ' => int, ' y ' => int, ' w ' => int]
$ faces = $ detector -> FaceDetect ( true );
[
[ ' x ' => int, ' y ' => int, ' w ' => int],
[ ' x ' => int, ' y ' => int, ' w ' => int],
[ ' x ' => int, ' y ' => int, ' w ' => int],
[ ' x ' => int, ' y ' => int, ' w ' => int],
[ ' x ' => int, ' y ' => int, ' w ' => int],
]
FaceDetector:: FaceDetect ([multiplue bool], [resSize int])
- GIF, jpeg, png, file gambar webp, sumber daya gd, dan biner gambar tersedia.
banyak
- Jika Anda menyetel beberapa nilai ke true, hingga 10 posisi wajah lainnya akan ditemukan dan dikembalikan sebagai array.
- Anda dapat memasukkan angka alih-alih benar, dibatasi 2 hingga 50.
- Tingkat pengenalan beberapa wajah sangat buruk, sehingga kemungkinan besar tidak semua wajah akan dikenali meskipun ukuran gambar diubah.
mengubah ukuran
- Daripada menggunakan gambar asli apa adanya, gunakan ukuran gambar yang diperkecil. Ini dikurangi berdasarkan lebar dan tinggi yang lebih kecil, dan nilai defaultnya adalah 281.
$ face = $ detector -> FaceDetect ();
$ size = $ detector -> getImageSize ();
$ direction = Xeno Image FaceDetector:: AlignDirection ( $ size [ ' width ' ], $ size [ ' height ' ], $ face [ ' x ' ], $ face [ ' y ' ], $ face [ ' w ' ]);
- Mengembalikan arah untuk menyelaraskan ke arah wajah.
- Jika lebarnya panjang, maka akan mengembalikan posisi terdeteksi wajah antara kiri, tengah, dan kanan, dan jika tingginya panjang, mengembalikan posisi terdeteksi wajah, antara atas, tengah, dan bawah.
- Kami menilai ini bias sekitar 30% atau lebih.
$ faces = Xeno Image FaceDetector:: FilterSmallFaces ( $ faces );
- Saring apa pun yang setidaknya 60% lebih kecil dari yang terbesar.
$ detector = new Xeno Image FaceDetector (imagefile or gdresource or imagebinary);
$ direction = $ detector -> getDirection ();
- Mengotomatiskan proses hingga pengenalan arah. Jika beberapa wajah dikenali, wajah-wajah tersebut akan berada di tengah.
$ detector = new Xeno Image FaceDetector (imagefile or gdresource or imagebinary);
[gd resource or boolean] = $ detector -> cropThumbnail (size, [direction], [file], [type]);
- Mengembalikan thumbnail yang dipotong. Meskipun dokumen asli lebih kecil dari ukurannya, namun tidak diperbesar agar pas, tetapi hanya dipotong sesuai rasio.
arah
- Jika dihilangkan, getDirection digunakan untuk mengisinya.
mengajukan
- Jika dihilangkan, sumber daya gd dikembalikan.
jenis
- gif, jpg, png, png8, dan webp didukung. Jika dihilangkan, itu ditentukan oleh ekstensi file.
- png8 menggunakan warna yang diindeks dengan cara yang sama seperti gif, jadi ukurannya kecil dan kualitas gambarnya buruk.
Contoh komprehensif terdapat di tes/example.php. Edit lokasi autoload.php Anda dan uji di konsol.
proyek js: https://github.com/crucifyer/facedetector-js