画像認識技術は人工知能分野の重要な分野であり、コンピューターが画像内の内容を自動的に識別し、そこから有用な情報を抽出できるようにします。 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 サイトの他の関連記事を参照してください。