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.
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()
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.
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()
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!