Kreiserkennung
Hier nochmal das Bild https://www.bilder-upload.eu/bild-9c4a0 ... 6.png.html da es oben nicht mehr funktioniert.
- __blackjack__
- User
- Beiträge: 14052
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Hilft das hier weiter? https://docs.opencv.org/3.0-last-rst/do ... ugh-circle
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
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.
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.
-
- User
- Beiträge: 512
- Registriert: Mittwoch 13. November 2019, 08:38
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()
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.
Danke, dass hat sehr geholfen.einfachTobi hat geschrieben: Dienstag 11. Februar 2020, 16:36Code: 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()
