PHP を通じてオブジェクト検出のためにカメラを呼び出す方法
カメラは現代の生活において非常に一般的になりました。カメラを使用してさまざまな操作を実行できますが、その 1 つが物体検出です。この記事では、PHP 言語を使用してカメラを呼び出し、オブジェクト検出を実行する方法を紹介します。
始める前に、PHP がインストールされていて、カメラが使用できることを確認する必要があります。オブジェクト検出に PHP を使用する手順は次のとおりです。
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
<?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
に保存します。最後に、顔検出結果を解析し、元の画像上に顔枠を描画し、結果を表示します。
detection.php
として保存し、ターミナルで次のコマンドを実行します: php detection.php
すべてが正常に実行されると、カメラでキャプチャされた画像が表示され、画像内で検出された顔に緑色のボックスを描画できるようになります。
概要
PHP を介してオブジェクト検出のためにカメラを呼び出すことは興味深い機能です。この記事では、OpenCV と php-facedetect ライブラリを使用してこの機能を実現する方法を紹介し、顔を検出する方法を示すサンプル コードを提供します。必要に応じて、他のオブジェクトを検出するようにコードを変更できます。
このサンプル コードは完全ではなく、デモンストレーションのみを目的としていることに注意してください。実際のプロジェクトでは、正確なオブジェクト検出を完了するために、より多くのロジックとアルゴリズムが必要になる場合があります。この記事があなたにインスピレーションを与えることを願っており、あなたの成功を祈っています。
以上がPHP を通じてオブジェクト検出のためにカメラを呼び出す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。