ホームページ  >  記事  >  バックエンド開発  >  PHP と OpenCV ライブラリを使用してテキスト領域検出を実装するにはどうすればよいですか?

PHP と OpenCV ライブラリを使用してテキスト領域検出を実装するにはどうすればよいですか?

王林
王林オリジナル
2023-07-17 11:21:411132ブラウズ

PHP と OpenCV ライブラリを使用してテキスト領域検出を実装するにはどうすればよいですか?

OpenCV は、画像処理およびマシン ビジョン アプリケーションに使用できるオープン ソースのコンピューター ビジョン ライブラリです。この記事では、PHP および OpenCV ライブラリを使用してテキスト領域検出を実装する方法を紹介します。

画像処理に PHP を使用するには、PHP 用の OpenCV 拡張機能をインストールする必要があります。次のコマンドを実行してインストールできます:

sudo apt-get install php7.4-dev
git clone https://github.com/php-opencv/php-opencv.git
cd php-opencv
phpize
./configure
make
sudo make install

次に、PHP 構成ファイルに OpenCV 拡張機能を導入する必要があります。 php.ini ファイルを編集して、ファイルの末尾に次の行を追加できます。

extension=opencv.so

ファイルを保存して閉じた後、PHP サービスを再起動します。

次に、例を使用して、PHP と OpenCV を使用して画像内のテキスト領域を検出する方法を示します。

まず、text_detection.php という名前の PHP ファイルを作成し、次のコードをファイルにコピーします:

<?php
// 加载OpenCV库
$opencv = new OpenCVOpenCV();

// 读取图像
$imagePath = "path/to/your/image.jpg";
$image = $opencv->imread($imagePath);

// 转换为灰度图像
$gray = $opencv->cvtColor($image, OpenCVCV_BGR2GRAY);

// 使用自适应阈值化将图像转换为二值图像
$binary = $opencv->adaptiveThreshold($gray, 255, OpenCVCV_ADAPTIVE_THRESH_GAUSSIAN_C, OpenCVCV_THRESH_BINARY, 11, 2);

// 创建形态学内核
$kernel = $opencv->getStructuringElement(OpenCVCvCV_SHAPE_RECT, new OpenCVCvSize(17, 3));

// 执行闭运算以将文本区域连接
$closing = $opencv->morphologyEx($binary, OpenCVCvCV_MOP_CLOSE, $kernel);

// 查找文本轮廓
$contours = $opencv->findContours($closing, OpenCVCV_RETR_EXTERNAL, OpenCVCV_CHAIN_APPROX_SIMPLE);

// 循环处理每个轮廓
foreach ($contours as $contour) {
    // 计算轮廓的边界框
    $boundingBox = $opencv->boundingRect($contour);

    // 在原始图像上绘制边界框
    $image = $opencv->rectangle($image, $boundingBox->tl(), $boundingBox->br(), new OpenCVCvScalar(0, 255, 0), 2);
}

// 显示结果图像
$opencv->imshow("Text Detection", $image);
$opencv->waitKey(0);

を変更する必要があることに注意してください。 path/to/your/image.jpg" 検出する画像へのパスに置き換えます。

上記のコードの機能は次のとおりです:

  1. OpenCV ライブラリをロードします。
  2. 画像を読み取り、グレースケール画像に変換します。
  3. 適応型しきい値処理法を使用して、グレースケール イメージをバイナリ イメージに変換します。
  4. 画像内のテキスト領域を接続するために使用される形態学的カーネルを作成します。
  5. 終了操作を実行してテキスト領域を接続します。
  6. 画像内のテキストのアウトラインを検索します。
  7. 各輪郭をループし、境界ボックスを計算し、元の画像上に境界ボックスを描画します。
  8. 結果画像を表示します。

ファイルを保存して閉じた後、ターミナルで次のコマンドを実行してコードを実行します。

php text_detection.php

コードを実行すると、マークされたテキストが表示された画像ウィンドウが表示されます。エリアを選択し、任意のキーが押されてウィンドウが閉じるまで待ちます。

上記の手順により、PHP と OpenCV ライブラリを使用してテキスト領域検出機能を実装することができました。このコード例をさらに拡張および最適化して、より具体的なニーズを満たすことができます。

以上がPHP と OpenCV ライブラリを使用してテキスト領域検出を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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