Seite 1 von 1
Kreiserkennung
Verfasst: Dienstag 11. Februar 2020, 03:03
von Noises1g
Ist es möglich von diesem Bild mit schlechter Auflösung
https://www.bilder-upload.eu/upload/029 ... 386345.png eine Kreiserkennung hinzubekommen? Es werden nur die Koordinate der Mittelpunkte benötigt.
Re: Kreiserkennung
Verfasst: Dienstag 11. Februar 2020, 03:47
von Noises1g
Hier nochmal das Bild
https://www.bilder-upload.eu/bild-9c4a0 ... 6.png.html da es oben nicht mehr funktioniert.
Re: Kreiserkennung
Verfasst: Dienstag 11. Februar 2020, 09:30
von __blackjack__
Re: Kreiserkennung
Verfasst: Dienstag 11. Februar 2020, 14:45
von Noises1g
Nicht wirklich da ich es auch schon mit hough circles versucht habe, aber keinen Erfolg hatte.
Re: Kreiserkennung
Verfasst: Dienstag 11. Februar 2020, 14:50
von __deets__
WAS hast du versucht? Irgendwas mit hough-circles ist ein bisschen schwach.
Du musst ggf. vorverarbeiten - zB binaer thresholden, oder Konvertierung in den HSV-Farbraum, und dann alles was gruen ist maskieren. Wenn du dann ein Bild hast, dass die Kreise in weiss auf schwarz zeigt, kannst du zB morphologischen Operationen dafuer sorgen, dass die besser voneinander separiert werden. Und dann mit hough-circles arbeiten.
Re: Kreiserkennung
Verfasst: Dienstag 11. Februar 2020, 16:36
von einfachTobi
Code: Alles auswählen
import cv2 as cv
img_input = cv.imread('green-circle.png')
edges = cv.Canny(img_input, 22, 131)
circles = cv.HoughCircles(edges, cv.HOUGH_GRADIENT, dp=1, minDist=8,
param1=50, param2=10, minRadius=6, maxRadius=10)
img_result = cv.copyTo(img_input, img_input)
if circles is not None:
for circle in circles[0, :]:
center = (circle[0], circle[1])
radius = circle[2]
cv.circle(img_result, center, radius, (255, 0, 255), 1)
print(f'gefundene grüne Punkte:\t{len(circles[0, :])}')
cv.imshow("Input", img_input)
cv.imshow("Edges", edges)
cv.imshow("Result", img_result)
cv.waitKey()
Ein erster Versuch ohne großes Anpassen der Parameter. Zum Testen von sinnvollen Parametern empfehle ich den
OpenCV Demonstrator. Da kann man einfach mal mit den Werten spielen und schauen was passiert. Ggf. musst du vorbereitete Bilder zwischenspeichern und dort einlesen.
Als Vorbereitung sind die von __deets__ genannten Möglichkeiten zu berücksichtigen.
Es wäre echt interessant zu wissen, was du bisher versucht hast. Eventuell muss das ja nur ein wenig angepasst werden.
Re: Kreiserkennung
Verfasst: Dienstag 11. Februar 2020, 17:31
von Noises1g
einfachTobi hat geschrieben: Dienstag 11. Februar 2020, 16:36
Code: Alles auswählen
import cv2 as cv
img_input = cv.imread('green-circle.png')
edges = cv.Canny(img_input, 22, 131)
circles = cv.HoughCircles(edges, cv.HOUGH_GRADIENT, dp=1, minDist=8,
param1=50, param2=10, minRadius=6, maxRadius=10)
img_result = cv.copyTo(img_input, img_input)
if circles is not None:
for circle in circles[0, :]:
center = (circle[0], circle[1])
radius = circle[2]
cv.circle(img_result, center, radius, (255, 0, 255), 1)
print(f'gefundene grüne Punkte:\t{len(circles[0, :])}')
cv.imshow("Input", img_input)
cv.imshow("Edges", edges)
cv.imshow("Result", img_result)
cv.waitKey()
Danke, dass hat sehr geholfen.
