cv2 python cv2.rectangle?
ich habe ein Programm das eine Farbe(gelb) erkennen kann, und diese dann mit einem Quadrat makiert.
Ist es möglich statt einem Quadrat es mit einem Kreis zu makieren?
1 Antwort
Vom Beitragsersteller als hilfreich ausgezeichnet
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
Python
Bei cv2 gibt es eine Funktion namens minEnclosingCircle und es gibt den kleinstmöglichen Kreis an, der alle gesuchten Objekte einschließt.
Man kann dann durch alle Objekte loopen und deren minimalen Kreis errechnen. Bei deinem Beispiel könnte man es z.B. so implementieren.
import numpy as np
import cv2
img = cv2.imread(r'image.jpg')
kernel = np.ones((7, 7), np.uint8)
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
lower_bound = np.array([20, 80, 80])
upper_bound = np.array([30, 255, 255])
mask = cv2.inRange(hsv, lower_bound, upper_bound)
mask = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel)
mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel)
segmented_img = cv2.bitwise_and(img, img, mask=mask)
contours, hierarchy = cv2.findContours(
mask.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for c in contours:
(x,y),radius = cv2.minEnclosingCircle(c)
center = (int(x),int(y))
radius = int(radius)
cv2.circle(img,center,radius,(0,0,0),2)
cv2.imshow("Output", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
Ich hoffe ich konnte dir helfen.
LG
Woher ich das weiß:Hobby
Danke, ich bemerk gerad das du ja richtig oft meine Fragen beantwortest, echter Ehrenmann