Heim  >  Artikel  >  Backend-Entwicklung  >  So führen Sie mit Python eine Hough-Transformation an Bildern durch

So führen Sie mit Python eine Hough-Transformation an Bildern durch

WBOY
WBOYOriginal
2023-08-26 13:16:45981Durchsuche

So führen Sie mit Python eine Hough-Transformation an Bildern durch

So führen Sie mit Python eine Hough-Transformation an Bildern durch

Zusammenfassung:
Die Hough-Transformation ist eine häufig verwendete Bildverarbeitungstechnik, mit der gerade Linien oder bestimmte spezifische Formen in Bildern erkannt werden. In diesem Artikel wird die Verwendung der OpenCV-Bibliothek in Python zum Implementieren der Hough-Transformation vorgestellt und der Implementierungsprozess anhand von Codebeispielen ausführlich erläutert.

Einführung:
Die Hough-Transformation ist eine 1962 von Hough vorgeschlagene Bildverarbeitungstechnik, die ursprünglich zur Erkennung gerader Linien in Bildern verwendet wurde. Anschließend wurde die Hough-Transformation häufig verwendet und erweitert, um Kreise, Ellipsen und andere Formen zu erkennen. Im Bereich Computer Vision und Bildverarbeitung ist die Hough-Transformation ein sehr wichtiges Werkzeug.

1. Prinzip der Hough-Transformation
Das Grundprinzip der Hough-Transformation besteht darin, jedes Pixel im Bild in eine Kurve (oder einen Parameterraum) im Polarkoordinatenraum (Hough-Raum) umzuwandeln. Bei einer geraden Linie repräsentieren die beiden Parameter den Abstand bzw. den Winkel der geraden Linie. Durch Auswahl von Punkten im Parameterraum und Finden von Schnittpunkten auf den Kurven können alle geraden Linien im Originalbild erhalten werden.

2. Einführung in die OpenCV-Bibliothek
OpenCV ist eine Open-Source-Softwarebibliothek für Computer Vision und maschinelles Lernen, die eine Fülle von Bildverarbeitungs- und Computer Vision-Algorithmen bereitstellt. Es handelt sich um eine der beliebtesten Bildverarbeitungsbibliotheken in Python mit leistungsstarken Bildverarbeitungsfunktionen und einer benutzerfreundlichen Oberfläche. In diesem Artikel wird die OpenCV-Bibliothek zum Implementieren der Hough-Transformation verwendet.

3. Verwenden Sie Python, um eine Hough-Transformation durchzuführen. Im Folgenden wird anhand eines konkreten Beispiels gezeigt, wie Sie mit Python eine Hough-Transformation für Bilder durchführen.

Zuerst müssen wir die erforderlichen Bibliotheken importieren:

import cv2
import numpy as np
import matplotlib.pyplot as plt

Dann lesen und zeigen Sie das Originalbild an:

image = cv2.imread("image.jpg")
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.axis('off')
plt.show()

Als nächstes konvertieren Sie das Bild in Graustufen:

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

Führen Sie dann eine Kantenerkennung für das Bild durch:

edges = cv2.Canny(gray, 50, 150)

Führen Sie als Nächstes die Hough-Transformation durch:

lines = cv2.HoughLines(edges, 1, np.pi/180, 200)

Durchqueren und zeichnen Sie die erkannten geraden Linien:

for line in lines:
    rho, theta = line[0]
    a = np.cos(theta)
    b = np.sin(theta)
    x0 = a*rho
    y0 = b*rho
    x1 = int(x0 + 1000*(-b))
    y1 = int(y0 + 1000*(a))
    x2 = int(x0 - 1000*(-b))
    y2 = int(y0 - 1000*(a))
    cv2.line(image, (x1, y1), (x2, y2), (0, 0, 255), 2)

Zeigen Sie abschließend das verarbeitete Bild an:

plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.axis('off')
plt.show()

Fazit:

Dieser Artikel beschreibt, wie Sie die OpenCV-Bibliothek in Python zum Transformieren von Bildern verwenden. Führen Sie Hough aus verwandeln. Anhand des Beispielcodes können wir die leistungsstarke Fähigkeit der Hough-Transformation bei der Erkennung gerader Linien erkennen. Neben geraden Linien bietet OpenCV auch Hough-Transformationsimplementierungen anderer Formen, die der Leser weiter lernen und ausprobieren kann.

Referenz:

    Hough, P. V. C. „Method and Means for Recognizing Complex Patterns“, US-Patent 3 069 654, 18. Dezember 1962.
  1. Bradski, G., Kaehler, A. „Learning OpenCV: Computer Vision with the OpenCV-Bibliothek.“ O'Reilly Media, Inc., 2008.
Anhang:

Siehe den Codeblock unten für den vollständigen Code:

import cv2
import numpy as np
import matplotlib.pyplot as plt

# 读取并显示原始图像
image = cv2.imread("image.jpg")
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.axis('off')
plt.show()

# 将图像转换为灰度图像
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 对图像进行边缘检测
edges = cv2.Canny(gray, 50, 150)

# 进行霍夫变换
lines = cv2.HoughLines(edges, 1, np.pi/180, 200)

# 遍历并绘制检测到的直线
for line in lines:
    rho, theta = line[0]
    a = np.cos(theta)
    b = np.sin(theta)
    x0 = a*rho
    y0 = b*rho
    x1 = int(x0 + 1000*(-b))
    y1 = int(y0 + 1000*(a))
    x2 = int(x0 - 1000*(-b))
    y2 = int(y0 - 1000*(a))
    cv2.line(image, (x1, y1), (x2, y2), (0, 0, 255), 2)

# 显示处理后的图像
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.axis('off')
plt.show()

Hinweis: Bitte ersetzen Sie das

im Code durch Ihren eigenen Bildpfad. "image.jpg"

Das obige ist der detaillierte Inhalt vonSo führen Sie mit Python eine Hough-Transformation an Bildern durch. 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