cv2 python cv2.rectangle?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

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

KatzenPhantom 
Fragesteller
 24.09.2022, 23:34

Danke, ich bemerk gerad das du ja richtig oft meine Fragen beantwortest, echter Ehrenmann

1