2017-11-21 3 views
-2

Ich kann "cv2.HoughLines" von Opencv verwenden, um Zeilen in einem Bild zu erkennen. Aber ich möchte wissen, wie ich Randomized Hough Transformation implementieren kann, um Zeilen mit opencv Python zu erkennen, da die Literaturübersicht sagt, dass RHT besser als HT ist. Kann mir bitte jemand helfen?Wie implementiert man randomisierte Hough-Transformation, um Linie zu erkennen?

das ist das Bild, das ich enter image description here habe

nach dem folgenden Code

lines = cv2.HoughLines(imgray, 1, np.pi/180, 300) 
for rho, theta in lines[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(imgray, (x1, y1), (x2, y2), (0, 0, 255), 2) 

i enter image description here

+0

Lehre, wie man eine solche über den Rahmen dieser Gemeinschaft komplexen Algorithmus ist Art und Weise zu implementieren. Das musst du selbst lernen. Ich bin sicher, dass Sie online Quellcode und Papiere finden. Sie können um Hilfe bei kleinen Schritten auf Ihrem Weg bitten, aber niemand wird 200 Seiten hier schreiben. – Piglet

+0

Wie kann ich mehrere Zeilen erkennen, nicht nur eine? – annie

+0

Sie erkennen wahrscheinlich mehr als eine Zeile, aber mindestens so formatiert wie in Ihrem Post wird Ihr Code nur eine Zeile zeichnen, da der Aufruf von cv2.line außerhalb der for-Schleife liegt ... – Piglet

Antwort

0

Verwenden Sie die probabilistische Hough-Transformation stattdessen das folgende Ergebnis bekam.

https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_imgproc/py_houghlines/py_houghlines.html

+0

Probabilistische Hough-Transformation unterscheidet sich von RHT. – annie

+0

@annie deshalb habe ich 'stattdessen' geschrieben. Es funktioniert besser und Sie müssen nichts implementieren. zumindest ist das RHT ein probabalistisches HT, vielleicht stimmt das nicht umgekehrt. es ist schneller. Ich habe noch nie einen Benchmark zwischen beiden gesehen, vielleicht können Sie einen erstellen? :) – Piglet

+0

danke @piglet – annie

Verwandte Themen