Ich versuche, Linien aus verrauschten Bildern zu erkennen und dadurch zu viele Zeilen zu bekommen. Ich muss mehrere Zeilen durchlaufen und das ist einfach zu langsam mit so vielen Zeilen, ich bin nur an Zeilen interessiert, die lang genug sind.Entfernen von kleinen Linien, die von OpenCV HoughLines erkannt wurden
Meine Codezeilen zu erkennen ist wie folgt: nur Bild ist
// Edge detection
int lowThreshold = 35;
Canny(greyMat, dst, lowThreshold, lowThreshold * 3, 3);
cv::blur(dst, dst, cv::Size(2,2));
// Standard Hough Line Transform
std::vector<cv::Vec2f> lines; // will hold the results of the detection
HoughLines(dst, lines, 1, rho_resolution, 150, 0, 0); // runs the actual detection
Meine Quelle und das resultierende Bild von Canny ist
HoughLines werden 100 Zeilen erkennen, ich bin interessiert an den langen in der Mitte, die ein Rechteck bilden. Wie kann ich die kurzen Zeilen entfernen? Wenn ich den Canny-Schwellenwert höre, werden einige Zeilen, die ich brauche, nicht erkannt.
Sie können 'HoughLinesP' verwenden. Das sechste Argument ist die minimale zu erkennende Zeilenlänge – Miki
Wenn Sie das rote Rechteck erhalten möchten, können Sie 'findContours' und' boundingRect/minAreaRect' versuchen. – Silencer
@Silencer Das ist, was ich will, aber manchmal Kanten sind verschwommen mit Farbe bluten, während ich versuche, TV-Bildschirm zu erkennen. Zuerst habe ich versucht, ein Rechteck direkt mit findContours zu erkennen, und das funktioniert einfach nicht. Ich versuche nun, ein Rechteck aus Linien zu erstellen. – superg