Ich möchte die Konturen eines Bildes extrahieren, ausgedrückt als eine Folge von Punktkoordinaten.Extrahieren Sie einzelne Linienkonturen von Canny Kanten
Mit Canny
bin ich in der Lage, ein Binärbild zu erzeugen, das nur die Kanten des Bildes enthält. Dann versuche ich findContours
zu verwenden, um die Konturen zu extrahieren. Die Ergebnisse sind jedoch nicht OK.
Für jede Kante bekam ich oft 2 Zeilen, als wäre es eine sehr dünne Fläche. Ich möchte meine Konturen vereinfachen, damit ich sie als einzelne Linien zeichnen kann. Oder extrahieren Sie sie vielleicht mit einer anderen Funktion, die direkt das richtige Ergebnis liefert, wäre sogar noch besser.
Ich habe mir die Dokumentation von OpenCV angesehen, aber ich konnte nichts Nützliches finden, aber ich vermute, dass ich nicht der Erste mit einem ähnlichen Problem bin. Gibt es irgendeine Funktion oder Methode, die ich verwenden könnte?
Hier ist der Python Code, den ich bisher geschrieben habe:
def main():
img = cv2.imread("lena-mono.png", 0)
if img is None:
raise Exception("Error while loading the image")
canny_img = cv2.Canny(img, 80, 150)
contours, hierarchy = cv2.findContours(canny_img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
contours_img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
scale = 10
contours_img = cv2.resize(contours_img, (0, 0), fx=scale, fy=scale)
for cnt in contours:
color = np.random.randint(0, 255, (3)).tolist()
cv2.drawContours(contours_img,[cnt*scale], 0, color, 1)
cv2.imwrite("canny.png", canny_img)
cv2.imwrite("contours.png", contours_img)
Der Skalierungsfaktor verwendet, um die doppelten Linien der Konturen zu markieren. Hier sind die Links zu den Bildern:
- Lena Graustufen-
- Edges extrahiert mit
Canny
- Contours: 10-fach Zoom, wo Sie die falsch Ergebnisse produziert von
findContours
sehen Irgendwelche Vorschlag wird sehr geschätzt werden.
sollten Sie HoughLines http://docs.opencv.org/modules/imgproc/doc/feature_detection.html#houghlines – Khashayar
verwischen Sie das Bild, um Geräusche zu reduzieren – baci
Ich glaube nicht, dass es eine Frage von Rauschen in th ist Das Bild. Wenn Sie die mit Canny extrahierten Kanten sehen, sind sie in Ordnung. Mit HoughLines wäre ich nicht in der Lage, gekrümmte Linien im Bild zu behandeln, nicht wahr? – Muffo