ホームページ  >  記事  >  バックエンド開発  >  PHP を通じてオブジェクト検出のためにカメラを呼び出す方法

PHP を通じてオブジェクト検出のためにカメラを呼び出す方法

王林
王林オリジナル
2023-07-30 23:21:211247ブラウズ

PHP を通じてオブジェクト検出のためにカメラを呼び出す方法

カメラは現代の生活において非常に一般的になりました。カメラを使用してさまざまな操作を実行できますが、その 1 つが物体検出です。この記事では、PHP 言語を使用してカメラを呼び出し、オブジェクト検出を実行する方法を紹介します。

始める前に、PHP がインストールされていて、カメラが使用できることを確認する必要があります。オブジェクト検出に PHP を使用する手順は次のとおりです。

  1. 関連ライブラリのインストール
    PHP をオブジェクト検出に使用するには、まず必要なライブラリをいくつかインストールする必要があります。ここでは OpenCV と php-facedetect ライブラリを使用します。これらのライブラリは、次のコマンドを使用してインストールできます。
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. PHP コードを記述する
    次に、カメラを呼び出してオブジェクト検出を実行するための PHP コードを記述します。以下は、顔を検出することを想定したサンプル コードです。
<?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');
?>

上記のコードは、最初にカメラを呼び出して画像を取得し、それを image.jpg として保存します。次に、OpenCV を介して画像の中央領域をトリミングし、cropped.jpg として保存します。次に、php-facedetect ライブラリのピコ顔検出プログラムを呼び出し、処理された画像を入力として取得し、顔検出結果を face.txt に保存します。最後に、顔検出結果を解析し、元の画像上に顔枠を描画し、結果を表示します。

  1. コードの実行
    上記のコードを detection.php として保存し、ターミナルで次のコマンドを実行します:
php detection.php

すべてが正常に実行されると、カメラでキャプチャされた画像が表示され、画像内で検出された顔に緑色のボックスを描画できるようになります。

概要
PHP を介してオブジェクト検出のためにカメラを呼び出すことは興味深い機能です。この記事では、OpenCV と php-facedetect ライブラリを使用してこの機能を実現する方法を紹介し、顔を検出する方法を示すサンプル コードを提供します。必要に応じて、他のオブジェクトを検出するようにコードを変更できます。

このサンプル コードは完全ではなく、デモンストレーションのみを目的としていることに注意してください。実際のプロジェクトでは、正確なオブジェクト検出を完了するために、より多くのロジックとアルゴリズムが必要になる場合があります。この記事があなたにインスピレーションを与えることを願っており、あなたの成功を祈っています。

以上がPHP を通じてオブジェクト検出のためにカメラを呼び出す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。