Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk memanggil kamera untuk pengesanan objek melalui PHP

Bagaimana untuk memanggil kamera untuk pengesanan objek melalui PHP

王林
王林asal
2023-07-30 23:21:211257semak imbas

Cara memanggil kamera untuk pengesanan objek melalui PHP

Kamera telah menjadi sangat biasa dalam kehidupan moden. Kita boleh menggunakan kamera untuk melakukan pelbagai operasi, salah satunya adalah pengesanan objek. Artikel ini akan memperkenalkan cara menggunakan bahasa PHP untuk memanggil kamera dan melakukan pengesanan objek.

Sebelum bermula, kita perlu pastikan PHP dipasang dan kamera boleh digunakan. Berikut ialah langkah untuk menggunakan PHP untuk pengesanan objek:

  1. Pasang perpustakaan yang berkaitan
    Untuk menggunakan PHP untuk pengesanan objek, kita perlu memasang beberapa perpustakaan yang diperlukan terlebih dahulu. Di sini kita akan menggunakan perpustakaan OpenCV dan php-facedetect. Perpustakaan ini boleh dipasang melalui arahan berikut:
sudo apt-get install python-opencv
sudo apt-get install unzip
wget https://github.com/nenadmarkus/pico
cd pico
unzip master.zip
cd /path/to/php-facedetect-master
  1. Tulis kod PHP
    Seterusnya, kita boleh menulis kod PHP untuk memanggil kamera dan melakukan pengesanan objek. Berikut ialah kod sampel, dengan andaian kami ingin mengesan wajah:
<?php
// 调用摄像头
exec('fswebcam -d /dev/video0 -r 1280x720 --no-banner image.jpg');

// 加载图片
$image = imagecreatefromjpeg('image.jpg');

// 设置参数
$scale = 4;
$w = imagesx($image) / $scale;
$h = imagesy($image) / $scale;
$size = min($w, $h);

$x = (imagesx($image) - $size) / 2;
$y = (imagesy($image) - $size) / 2;

// 裁剪图片
$croppedImage = imagecrop($image, ['x' => $x, 'y' => $y, 'width' => $size, 'height' => $size]);

// 保存裁剪后的图片
imagejpeg($croppedImage, 'cropped.jpg');

// 调用pico人脸检测库
exec('pico/picornt cropped.jpg face.txt');

// 解析人脸检测结果
$faceTxt = file_get_contents('face.txt');
$faceTxt = explode("
", $faceTxt);
$faceCount = count($faceTxt);

// 在原始图像上绘制检测到的人脸框
for ($i = 0; $i < $faceCount - 1; $i++) {
    $faceData = explode(" ", $faceTxt[$i]);
    
    $x = $faceData[0] * $scale;
    $y = $faceData[1] * $scale;
    $width = $faceData[2] * $scale;
    $height = $faceData[3] * $scale;
    
    imagerectangle($image, $x, $y, $x + $width, $y + $height, imagecolorallocate($image, 0, 255, 0));    
}

// 显示图像
header("Content-Type: image/jpeg");
imagejpeg($image);

// 删除临时文件
unlink('image.jpg');
unlink('cropped.jpg');
unlink('face.txt');
?>

Kod di atas mula-mula memanggil kamera untuk mendapatkan imej dan menyimpannya sebagai image.jpg. Kemudian, pangkas kawasan tengah imej melalui OpenCV dan simpan sebagai cropped.jpg. Seterusnya, panggil program pengesanan muka pico dalam pustaka php-facedetect, ambil imej yang diproses sebagai input dan simpan hasil pengesanan muka ke face.txt. Akhir sekali, hasil pengesanan muka dihuraikan, bingkai muka dilukis pada imej asal dan hasilnya dipaparkan. image.jpg。然后,通过OpenCV裁剪图像的中心区域,保存为cropped.jpg。接下来,调用php-facedetect库中的pico人脸检测程序,将处理后的图像作为输入,并将人脸检测结果保存到face.txt。最后,解析人脸检测结果,并在原始图像上绘制人脸框,将结果显示出来。

  1. 运行代码
    保存上述代码为detection.php
    1. Jalankan kod
    Simpan kod di atas sebagai detection.php dan jalankan arahan berikut dalam terminal:

    php detection.php

    Jika semuanya berjalan lancar, anda akan dapat melihat Kamera menangkap imej dan melukis kotak hijau pada muka yang dikesan dalam imej.

    Ringkasan

    Memanggil kamera melalui PHP untuk pengesanan objek ialah fungsi yang menarik. Dalam artikel ini, kami memperkenalkan cara menggunakan OpenCV dan perpustakaan php-facedetect untuk mencapai fungsi ini, dan menyediakan kod sampel untuk menunjukkan cara mengesan wajah. Anda boleh mengubah suai kod untuk mengesan objek lain mengikut keperluan.

    🎜Sila ambil perhatian bahawa kod sampel ini tidak lengkap dan adalah untuk tujuan demonstrasi sahaja. Dalam projek sebenar, anda mungkin memerlukan lebih logik dan algoritma untuk melengkapkan pengesanan objek yang tepat. Saya harap artikel ini dapat memberi inspirasi kepada anda, dan saya harap anda berjaya! 🎜

    Atas ialah kandungan terperinci Bagaimana untuk memanggil kamera untuk pengesanan objek melalui PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn