Ich habe ein Bild und es hat einige Formen drin. Ich habe Linien mit Hough-Linien gefunden. Wie kann ich erkennen, welche Linien parallel sind?Python openCV erkennen parallele Linien
Antwort
Gleichung einer Geraden in kartesischen Koordinaten:
y = k · x + b
Zwei Linien y = k1 * x + b1, y = k2 * x + b2 parallel ist, wenn k1 = k2.
Sie müssen also den Koeffizienten k für jede erkannte Linie berechnen.
Um eindeutig identifizieren die Gleichung einer Linie Sie die Koordinaten von zwei Punkten , die Linie gehören wissen müssen.
Nachdem mit HoughLines (С ++) gefunden Zeilen aufweist:
vector<Vec2f> lines;
HoughLines(dst, lines, 1, CV_PI/180, 100, 0, 0);
haben Sie die Vektorlinien, die die Parameter (r, theta) der detektierten Linien in Polarkoordinaten gespeichert werden. Sie müssen sie in kartesischen Koordinaten übertragen:
Hier Beispiel in C++:
for(size_t i = 0; i < lines.size(); i++)
{
float rho = lines[i][0], theta = lines[i][1];
Point pt1, pt2;
double a = cos(theta), b = sin(theta);
double x0 = a*rho, y0 = b*rho;
pt1.x = cvRound(x0 + 1000*(-b)); //the first point
pt1.y = cvRound(y0 + 1000*(a)); //the first point
pt2.x = cvRound(x0 - 1000*(-b)); //the second point
pt2.y = cvRound(y0 - 1000*(a)); //the second point
}
Nachdem diese beiden Punkte einer Linie bekam haben Sie seine Gleichung berechnen kann.
HoughLines gibt seine Ergebnisse in Polarkoordinaten zurück. Überprüfen Sie einfach den 2. Wert für den Winkel. Keine Notwendigkeit, x zu konvertieren, y
def findparallel(lines):
lines1 = []
for i in range(len(lines)):
for j in range(len(lines)):
if (i == j):continue
if (abs(lines[i][1] - lines[j][1]) == 0):
#You've found a parallel line!
lines1.append((i,j))
return lines1
- 1. Opencv erkennen Viereck in Python
- 2. Erkennen Sternform in opencv-Python
- 3. Detects Linien Opencv in Objekt
- 4. OpenCV Hough stärkste Linien
- 5. Python OpenCV: Eine allgemeine Bewegungsrichtung erkennen?
- 6. Notwendigkeit zu erkennen, Bücher über OpenCV Python
- 7. OpenCV zu erkennen Bild mit Python
- 8. OpenCV Mit Parkplatz erkennen spots
- 9. Erkennen Mund mit OpenCV
- 10. OpenCV erkennen abgedunkeltes Rechteck
- 11. Überlappende Kreise in OpenCV erkennen
- 12. OpenCV erkennen Quadrat mit schwierigem Hintergrund
- 13. Erkennen von Blobs im Bild mit OpenCV
- 14. Python OpenCV - Fehler beim Erkennen kleiner "Löcher" (Kreise)
- 15. OpenCV nicht erkennen Mat Größe
- 16. Erkennen eines Musters mit OpenCV
- 17. Frame-Drop in OpenCV erkennen
- 18. Longest Linienerkennung - Python - opencv
- 19. opencv-python objekterkennung
- 20. OpenCV erkennen Gesichtspunkte (Ohr-Kinn-Ohr-Linie)
- 21. python opencv panorama blacklines
- 22. Android OpenCV - Kurven von Houghlines erkennen
- 23. OpenCV Nutenerkennung
- 24. Kreiskonturerkennung in einem Bild python opencv
- 25. Python-Fabric für parallele Verarbeitung
- 26. Erkennen von offenen und geschlossenen Formen opencv
- 27. Problem Erkennen von Ball mit opencv
- 28. Erkennen einer Dose oder Flasche in opencv
- 29. OpenCV: Katze mit bestimmter Farbe erkennen. Trivial?
- 30. Erkennen von Gesichtern im Hochformat mit OpenCV
Wenn dies in Python getan wird, wie in den Tags angegeben, können Sie die scipy Version von HoughLines verwenden können, die die houghspace Ausgabebild bietet: Siehe hier] (http://scikit-image.org/docs/dev/auto_examples/plot_line_hough_transform.html). Sie können dann die unabhängige Achse (Theta oder 'X') und die abhängige Achse (Rho oder 'Y') so spiegeln, dass Theta jetzt die abhängige Achse ist. Nach der Schwellenwertbildung dieses Hough-Raumbildes (um die intensivsten Punkte von (rho, theta) zu erhalten, die den wahrscheinlichsten Linien entsprechen) können Sie eine horizontale Linie an die Daten anpassen: theta = konstant (y = mx + b ohne Steigung)). – chase