Wie im Bild gezeigt, versuche ich mithilfe von OpenCV die Straßenmarkierungspfeile in Bildern zu erkennen. Die Pfeile sind immer von gleicher Größe und Form, können jedoch in verschiedenen Orientierungen erscheinen. /> [*] Gerade oder linke Kurve
Was habe ich versucht. cv.MatchTemplate Verwenden Sie TM_CCORR_NORMED
Code: Select all
cv.matchTemplate
import numpy as np
# Load Image
img = cv2.imread('path_to_image')
# Preprocessing
processed = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
processed = cv2.bilateralFilter(processed, 11, 75, 75)
processed = cv2.Canny(processed, 50, 150)
kernel = np.ones((3, 3), np.uint8)
processed = cv2.morphologyEx(processed, cv2.MORPH_CLOSE, kernel, iterations=1)
# Hough Line Transform
lines = cv2.HoughLinesP(processed, 1, np.pi/180, threshold=50, minLineLength=30, maxLineGap=10)
if lines is not None:
for line in lines:
x1, y1, x2, y2 = line[0]
cv2.line(img, (x1, y1), (x2, y2), (0, 255, 0), 2)
# Contour Detection
contours, _ = cv2.findContours(processed, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for cnt in contours:
approx = cv2.approxPolyDP(cnt, 0.02 * cv2.arcLength(cnt, True), True)
if len(approx) > 5: # Rough filter for arrow shapes
cv2.drawContours(img, [approx], 0, (255, 0, 0), 2)
# Display Results
cv2.imshow('Detected Arrows', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
< /code>
Zusätzlicher Kontext < /strong> < /p>
- Das bereitgestellte Bild ist eine vergrößerte Version eines viel größeren 8.000 × 8.000-Pixel-Bildes. Das vollständige Bild enthält viel mehr Lärm, einschließlich Straßenmarkierungen und Kreuzungen, aber die Straßenmarkierungen selbst scheinen sich von den anderen zu unterscheiden. Die Pfeile selbst sind im vollständigen Bild viel kleiner (ungefähr 7 kb, wenn Sie einen einzelnen Pfeil herausschneiden). Haben Sie kommentierte Daten zum Arbeiten. Das Erstellen eines Trainingsdatensatzes ist aus zeitlichen Einschränkungen nicht möglich.