ホームページ >バックエンド開発 >PHPチュートリアル >PHPで画像認識技術を使用する方法

PHPで画像認識技術を使用する方法

PHPz
PHPzオリジナル
2023-06-11 12:28:462559ブラウズ

画像認識技術は人工知能分野の重要な分野であり、コンピューターが画像内の内容を自動的に識別し、そこから有用な情報を抽出できるようにします。 Webアプリケーションでは、認証コードの検証、顔認識、画像検索など、画像認識技術が幅広く活用できます。この記事では、PHPにおける画像認識技術の使い方を紹介します。

1. 依存ライブラリをインストールする

まず、必要な依存ライブラリをサーバーにインストールする必要があります。これらの中で最も重要なものは Tesseract OCR エンジンです。これは、画像内のテキストを認識するために使用できるオープンソース OCR プロジェクトです。画像の処理に使用できる Gd 拡張機能もインストールする必要があります。

Ubuntu システムでは、次のコマンドを使用してインストールします:

sudo apt-get install tesseract-ocr libtesseract-dev
sudo apt-get install php-gd

2. 画像検証コードの認識

画像検証コードは、悪意のあるプログラムが自動的に実行されるのを防ぐために、多くの Web サイトで使用されています。アカウントの登録や攻撃手段。しかし、ユーザーにとって複雑な認証コードを入力するのは不便です。そこで、画像認識技術を利用してPHPに検証コードを自動認識させることができます。

コード例:

// 图像处理
$im = imagecreatefromjpeg('captcha.jpg');

// 处理后的图像
$image = imagecreatetruecolor(120, 70);

// 转换为灰度图像
imagefilter($im, IMG_FILTER_GRAYSCALE);

// 去除噪点
imagefilter($im, IMG_FILTER_CONTRAST, 255);

// 复制到新图像
imagecopyresampled($image, $im, 0, 0, 0, 0, 120, 70, 120, 70);

// 保存处理后的图像
imagejpeg($image, 'captcha_processed.jpg');

// 调用OCR识别验证码
$output = shell_exec('tesseract captcha_processed.jpg stdout -c tessedit_char_whitelist=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz');

この例では、画像をグレー表示し、ノイズを除去し、最後に Tesseract OCR エンジンを呼び出して認識するなど、jpg 形式の検証コード画像を処理します。認識結果は $output 変数に保存されます。

3. 顔認識

顔認識は、ユーザーの身元確認や写真管理などに使用できる、広く使用されている画像認識テクノロジーです。 PHP では、OpenCV ライブラリを使用して顔認識を実装できます。

OpenCV は PHP 自体の拡張ライブラリではないため、コンパイルしてインストールする必要があります。

コード例:

// 加载图像
$im = cvLoadImage('test.jpg');

// 创建Cascade分类器
$face_cascade = cvLoadHaarClassifierCascade('haarcascade_frontalface_alt.xml');

// 识别人脸
$faces = cvHaarDetectObjects($im, $face_cascade, new CvMemStorage(), 1.5, 3, 0);

// 绘制识别结果
for ($i = 0; $i < count($faces); $i++) {
    cvRectangle($im, new CvPoint($faces[$i]-x, $faces[$i]-y), new CvPoint($faces[$i]-x + $faces[$i]-width, $faces[$i]-y + $faces[$i]-height), new CvScalar(0, 255, 0));
}

// 保存识别结果
cvSaveImage('test_result.jpg', $im);

この例では、OpenCV ライブラリを使用して jpg 形式のポートレート画像を読み込み、特定の分類器を通じて画像内の顔を検出します。検出結果は四角枠で囲まれ、新規jpg画像として保存されます。

4. 画像検索

画像検索は、類似した写真を見つけることができる技術であり、著作権保護やサブピクチャの識別などに使用できます。 PHP では、Dhash アルゴリズムを使用して画像検索を実装できます。

コード例:

// 加载图像
$img1 = imagecreatefromjpeg('test1.jpg');
$img2 = imagecreatefromjpeg('test2.jpg');

// 计算Dhash值
$hash1 = dhash($img1);
$hash2 = dhash($img2);

// 计算汉明距离
$distance = hammingDistance($hash1, $hash2);

// 显示比对结果
echo $distance;

// Dhash算法实现
function dhash($im) {
    $im = imagecreatetruecolor(9, 8);
    imagecopyresampled($im, $src, 0, 0, 0, 0, 9, 8, imagesx($src), imagesy($src));
    $str = '';
    for ($y = 0; $y < 8; $y++) {
        $val = 0;
        for ($x = 0; $x < 8; $x++) {
            $curr = imagecolorat($im, $x, $y) & 0xFF;
            $next = imagecolorat($im, $x+1, $y) & 0xFF;
            $val <<= 1;
            $val |= ($curr > $next) ? 1 : 0;
        }
        $str .= sprintf('%02x', $val);
    }
    return $str;
}
// 计算汉明距离
function hammingDistance($str1, $str2) {
    $distance = 0;
    $len = strlen($str1);
    for ($i = 0; $i < $len; $i++) {
        if ($str1[$i] != $str2[$i]) {
            $distance++;
        }
    }
    return $distance;
}

この例では、Dhash アルゴリズムを使用して jpg 形式の 2 つの画像を比較し、それらの間のハミング距離を計算します。ハミング距離が小さいほど、ハミング距離は小さくなり、画像が似ているほど度合いが高くなります。

概要:

この記事の導入部を通じて、画像検証コード認識、顔認識、画像検索などを含む、PHP での画像認識テクノロジの使用方法を学びました。これらのテクノロジーは、Web アプリケーションのセキュリティとインテリジェンスを向上させ、ユーザーにより便利で豊富な機能を提供するのに役立ちます。

以上がPHPで画像認識技術を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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