Ich benutze Python 2.7 und OpenCV 3.0. Ich mache ein Projekt zu Erkennung des Kfz-Kennzeichen.Opencv erkennen Viereck in Python
Ich überprüfe jetzt die Anzahl der Scheitelpunkte der Konturen. Wenn es 4 Ecken gibt (Anzahl der Elemente in etwa), dann ist es wahrscheinlicher, ein Rechteck/Parallelogramm/Viereck zu sein.
(cnts, _) = cv2.findContours(edged.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
cnts=sorted(cnts, key = cv2.contourArea, reverse = True)[:10]
# loop over our contours
for c in cnts:
peri = cv2.arcLength(c, True)
approx = cv2.approxPolyDP(c, 0.02 * peri, True)
if len(approx) == 4 and ratio(approx):
cv2.drawContours(image, [approx], -1, (0,255,0), 3)
Und ich habe zwei Vierecke mit Array.
Allerdings können Sie sehen, gibt es eine unregelmäßiges Vieleck. Dies ist das Array:
[[[209 198]]
[[466 94]]
[[259 153]]
[[247 1]]]
Wen ich frage, wie kann ich das unregelmäßige Viereck weggelassen. Danke
Von ganz oben: Berechnen Sie die [Convex hull] (http://docs.opencv.org/3.1.0/d3/dc0/group__imgproc__shape.html#ga014b28e56cb8854c0de4a211cb2be656&gsctab=0) und vergleichen Sie das ursprüngliche Polygon zu seiner konvexen Hülle. Wenn sie nicht ähnlich sind, ist es wahrscheinlich kein Nummernschild. – user1337