ホームページ  >  記事  >  バックエンド開発  >  PHP はリアルタイム画像処理のためにカメラを呼び出します: 簡単なチュートリアルの共有

PHP はリアルタイム画像処理のためにカメラを呼び出します: 簡単なチュートリアルの共有

WBOY
WBOYオリジナル
2023-07-31 16:01:171140ブラウズ

PHP はリアルタイム画像処理のためにカメラを呼び出します: 簡単なチュートリアルの共有

カメラのリアルタイム画像処理は、ビデオ監視、顔認識、画像分析などの多くのシナリオで広く使用されています。 。 PHP 開発者にとっては、カメラを呼び出してリアルタイムの画像処理を実現することも可能です。この記事では、PHP を使用してカメラを呼び出してリアルタイムの画像処理を行う方法を説明する簡単なチュートリアルを紹介します。

  1. 対応するソフトウェアとドライバーをインストールする
    PHP を使用してカメラを呼び出すには、まず対応するソフトウェアとドライバーをインストールする必要があります。 Windows システムでは、オープン ソースのカメラ ドライバー ライブラリ OpenCV と PHP プラグイン php-opencv を使用してこれを実現できます。具体的なインストール手順は次のとおりです。

1.1 OpenCV のダウンロードとインストール
OpenCV の公式 Web サイト (https://opencv.org/) にアクセスして、最新バージョンの OpenCV をダウンロードできます。 OpenCV。お使いのシステムに応じて、対応するインストール パッケージを選択し、ダウンロードしてインストールを完了します。

1.2 php-opencv プラグインのインストール
php-opencv は、PHP 開発者が OpenCV ライブラリを操作するための拡張プラグインです。プラグインのソース コードは GitHub (https://github.com/opencv/opencv_contrib) で見つけてダウンロードし、コンパイルしてインストールできます。具体的なインストール手順は、公式ドキュメントに従って実行できます。

  1. カメラの呼び出しとリアルタイム画像の表示
    関連するソフトウェアとドライバーをインストールした後、カメラを呼び出してリアルタイム画像を表示するための PHP コードの記述を開始できます。
<?php
$video = new VideoCapture(0); // 打开默认摄像头

while (true) {
    $frame = $video->read(); // 读取摄像头的图像帧

    if ($frame !== null) {
        $image = cvimencode(".bmp", $frame); // 对图像帧进行编码
        echo "<img src="data:image/bmp;base64," . base64_encode($image) . ""/>"; // 显示图像
    }

    if (waitKey(1) >= 0) { // 按下任意键退出循环
        break;
    }
}

$video->release(); // 释放摄像头资源
?>

上記のコードは、php-opencv プラグインを使用してデフォルトのカメラを開き、VideoCapture クラスを呼び出してカメラの画像フレームを読み取ります。次に、画像フレームがエンコードされ、echo ステートメントを介してブラウザに画像が表示されます。いずれかのキーが押されると、ループを終了し、カメラのリソースを解放します。

  1. リアルタイム画像処理
    リアルタイム画像の表示に加えて、画像に対してリアルタイム処理を実行することもできます。顔認識を例にとると、OpenCV の顔認識アルゴリズムを使用してリアルタイムの顔検出を行うことができます。
<?php
$video = new VideoCapture(0); // 打开默认摄像头

$cascade = new CascadeClassifier('haarcascade_frontalface_default.xml'); // 加载人脸识别模型

while (true) {
    $frame = $video->read(); // 读取摄像头的图像帧

    if ($frame !== null) {
        $gray = cvcvtColor($frame, cvCOLOR_BGR2GRAY); // 将彩色图像转换为灰度图像
        cvequalizeHist($gray, $gray); // 直方图均衡化增强对比度

        $faces = $cascade->detectMultiScale($gray); // 人脸检测

        foreach ($faces as $face) {
            cvectangle($frame, $face, new Scalar(0, 255, 0)); // 绘制人脸矩形
        }

        $image = cvimencode(".bmp", $frame); // 对图像帧进行编码
        echo "<img src="data:image/bmp;base64," . base64_encode($image) . ""/>"; // 显示图像
    }

    if (waitKey(1) >= 0) { // 按下任意键退出循环
        break;
    }
}

$video->release(); // 释放摄像头资源
?>

カメラから画像フレームを読み取った後、上記のコードはまずカラー画像をグレースケール画像に変換し、ヒストグラム等化を使用してコントラストを強化します。次に、ロードされた顔認識モデルを使用して顔検出を実行し、検出された顔の四角形を描画します。最後に、画像フレームがエンコードされて表示されます。

上記の簡単なチュートリアルを通じて、PHP を使用してカメラを呼び出し、リアルタイムの画像処理を行うことができます。もちろん、実際のアプリケーションではさらに複雑なアルゴリズムや処理手順が必要になる場合がありますが、この記事では入門レベルの例を示しますので、リアルタイム画像処理の学習に役立てていただければ幸いです。興味があれば、OpenCV と php-opencv が提供するさらに多くの関数とインターフェイスをさらに学習し、探索することができます。

以上がPHP はリアルタイム画像処理のためにカメラを呼び出します: 簡単なチュートリアルの共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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