Maison  >  Article  >  développement back-end  >  Comment appeler la caméra pour la détection d'objets via PHP

Comment appeler la caméra pour la détection d'objets via PHP

王林
王林original
2023-07-30 23:21:211257parcourir

Comment appeler la caméra pour la détection d'objets via PHP

Les caméras sont devenues très courantes dans la vie moderne. Nous pouvons utiliser des caméras pour effectuer diverses opérations, dont la détection d’objets. Cet article explique comment utiliser le langage PHP pour appeler la caméra et effectuer la détection d'objets.

Avant de commencer, nous devons nous assurer que PHP est installé et que la caméra peut être utilisée. Voici les étapes pour utiliser PHP pour la détection d'objets :

  1. Installer les bibliothèques pertinentes
    Pour utiliser PHP pour la détection d'objets, nous devons d'abord installer certaines bibliothèques nécessaires. Ici, nous utiliserons OpenCV et la bibliothèque php-facedetect. Ces bibliothèques peuvent être installées via la commande suivante :
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. Écrire du code PHP
    Ensuite, nous pouvons écrire du code PHP pour appeler la caméra et effectuer la détection d'objets. Ce qui suit est un exemple de code, en supposant que nous voulons détecter des visages :
<?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');
?>

Le code ci-dessus appelle d'abord la caméra pour obtenir une image et l'enregistre sous image.jpg. Ensuite, recadrez la zone centrale de l'image via OpenCV et enregistrez-la sous cropped.jpg. Ensuite, appelez le programme de détection de visage pico dans la bibliothèque php-facedetect, prenez l'image traitée en entrée et enregistrez les résultats de détection de visage dans face.txt. Enfin, les résultats de la détection des visages sont analysés, le cadre du visage est dessiné sur l'image d'origine et les résultats sont affichés. image.jpg。然后,通过OpenCV裁剪图像的中心区域,保存为cropped.jpg。接下来,调用php-facedetect库中的pico人脸检测程序,将处理后的图像作为输入,并将人脸检测结果保存到face.txt。最后,解析人脸检测结果,并在原始图像上绘制人脸框,将结果显示出来。

  1. 运行代码
    保存上述代码为detection.php
    1. Exécutez le code
    Enregistrez le code ci-dessus sous detection.php et exécutez la commande suivante dans le terminal :

    php detection.php

    Si tout fonctionne correctement, vous pouvoir voir La caméra capture l'image et dessine des carrés verts sur les visages détectés dans l'image.

    Résumé

    Appeler la caméra via PHP pour la détection d'objets est une fonction intéressante. Dans cet article, nous expliquons comment utiliser OpenCV et la bibliothèque php-facedetect pour obtenir cette fonctionnalité, et fournissons un exemple de code pour démontrer comment détecter les visages. Vous pouvez modifier le code pour détecter d'autres objets selon vos besoins.

    🎜Veuillez noter que cet exemple de code n'est pas complet et est uniquement destiné à des fins de démonstration. Dans les projets réels, vous aurez peut-être besoin de plus de logique et d'algorithmes pour effectuer une détection précise des objets. J'espère que cet article pourra vous inspirer et je vous souhaite du succès ! 🎜

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Déclaration:
    Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn