Есть ли способ стабилизировать обнаруженные круги в python / opencv? - PullRequest
0 голосов
/ 30 сентября 2019

Я пытаюсь обнаружить несколько колец с помощью камеры. В данный момент я могу обнаружить кольца, но обнаруженные круги не стабилизируются. X, y и r колец непрерывно изменяют значение. Есть ли способ их стабилизировать?

def callback (self, data): try: cv_image = self.bridge.imgmsg_to_cv2 (data, "bgr8"), кроме CvBridgeError как e: print (e)

hsv = cv2.cvtColor(cv_image, cv2.COLOR_BGR2HSV)

l_b = np.array([l_h, l_s, l_v])
u_b = np.array([u_h, u_s, u_v])

mask = cv2.inRange(hsv, l_b, u_b)

res = cv2.bitwise_and(cv_image, cv_image, mask=mask)

output = res.copy()
gray = cv2.cvtColor(res, cv2.COLOR_BGR2GRAY)
gray = cv2.medianBlur(gray, 5)
circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 2, 215,
                     param1=61, param2=140, minRadius=42, maxRadius=60)
print(circles)

if circles is not None:
    circles = np.round(circles[0, :].astype("int"))

    for (x, y, r) in circles:
        cv2.circle(output, (x, y), r, (0, 255, 0), 2)

Выходные данные, которые я получаю из 2 кругов:

[[[349. 129. 55.07267761] [143. 263. 49.64876556]]]

[[[347129. 56,63920975] [155. 261. 50.93132782]]]

[[[347. 129. 56.64803696] [147. 263. 55.56977463]]]

[[[349. 131. 56.43580246] [149. 265. 55.31726837]]]

[[[347. 129. 56.64803696] [151. 257. 51.10773087]]]

Надеюсь получить больше информации вместе.

...