Heim >Backend-Entwicklung >PHP-Tutorial >Wie implementiert man die Textbereichserkennung mithilfe der PHP- und OpenCV-Bibliothek?

Wie implementiert man die Textbereichserkennung mithilfe der PHP- und OpenCV-Bibliothek?

王林
王林Original
2023-07-17 11:21:411199Durchsuche

Wie implementiert man die Textbereichserkennung mithilfe der PHP- und OpenCV-Bibliothek?

OpenCV ist eine Open-Source-Computer-Vision-Bibliothek, die für Bildverarbeitungs- und Machine-Vision-Anwendungen verwendet werden kann. In diesem Artikel stellen wir vor, wie Sie PHP- und OpenCV-Bibliotheken verwenden, um die Textbereichserkennung zu implementieren.

Um PHP für die Bildverarbeitung zu verwenden, müssen wir die OpenCV-Erweiterung für PHP installieren. Es kann durch Ausführen des folgenden Befehls installiert werden:

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

Als nächstes müssen wir die OpenCV-Erweiterung in die Konfigurationsdatei von PHP einführen. Sie können die Datei php.ini bearbeiten und am Ende der Datei eine Zeile hinzufügen:

extension=opencv.so

Nach dem Speichern und Schließen der Datei starten Sie den PHP-Dienst neu.

Als nächstes gehen wir ein Beispiel durch, um zu demonstrieren, wie man Textbereiche in Bildern mit PHP und OpenCV erkennt.

Erstellen Sie zunächst eine PHP-Datei mit dem Namen text_detection.php und kopieren Sie den folgenden Code in die Datei: 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"

php text_detection.php

Bitte beachten Sie, dass Sie den "Pfad/ ändern müssen, um /your/ zu ersetzen. image.jpg" mit dem Pfad zu dem Bild, das Sie erkennen möchten.

Die Funktionen des obigen Codes sind wie folgt:
  1. Laden Sie die OpenCV-Bibliothek.
  2. Lesen Sie das Bild und konvertieren Sie es in ein Graustufenbild.
  3. Konvertieren Sie Graustufenbilder mithilfe der adaptiven Schwellenwertmethode in Binärbilder.
  4. Erstellen Sie einen morphologischen Kernel zum Verbinden von Textbereichen in einem Bild.
  5. Führen Sie Schließvorgänge aus, um Textbereiche zu verbinden.
  6. Suchen Sie Textumrisse in Bildern.
  7. Durchlaufen Sie jede Kontur, berechnen Sie den Begrenzungsrahmen und zeichnen Sie den Begrenzungsrahmen auf dem Originalbild.
  8. Ergebnisbild anzeigen.

Führen Sie nach dem Speichern und Schließen der Datei den folgenden Befehl im Terminal aus, um den Code auszuführen:

rrreee

Nach der Ausführung des Codes wird ein Bildfenster mit einem markierten Textbereich angezeigt und Sie warten darauf, dass eine beliebige Taste gedrückt wird Schließen Sie das Fenster.

Durch die oben genannten Schritte haben wir die Funktion der Textbereichserkennung mithilfe von PHP- und OpenCV-Bibliotheken erfolgreich implementiert. Sie können dieses Codebeispiel weiter erweitern und optimieren, um spezifischere Anforderungen zu erfüllen. 🎜

Das obige ist der detaillierte Inhalt vonWie implementiert man die Textbereichserkennung mithilfe der PHP- und OpenCV-Bibliothek?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn