Я работаю над проектом, в котором я должен обнаружить светофоры (круги, очевидно). Теперь я работаю с образцом, который я взял с места, однако после всех моих усилий я не могу получить код, чтобы определить правильный круг (свет).Преобразование hough не обнаруживает правильный круг
Вот код: -
# import the necessary packages
import numpy as np
import cv2
image = cv2.imread('circleTestsmall.png')
output = image.copy()
# Apply Guassian Blur to smooth the image
blur = cv2.GaussianBlur(image,(9,9),0)
gray = cv2.cvtColor(blur, cv2.COLOR_BGR2GRAY)
# detect circles in the image
circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 1.2, 200)
# ensure at least some circles were found
if circles is not None:
# convert the (x, y) coordinates and radius of the circles to integers
circles = np.round(circles[0, :]).astype("int")
# loop over the (x, y) coordinates and radius of the circles
for (x, y, r) in circles:
# draw the circle in the output image, then draw a rectangle
# corresponding to the center of the circle
cv2.circle(output, (x, y), r, (0, 255, 0), 4)
cv2.rectangle(output, (x - 5, y - 5), (x + 5, y + 5), (0, 128, 255), -1)
# show the output image
cv2.imshow("output", output)
cv2.imshow('Blur', blur)
cv2.waitKey(0)
Изображение, в котором я хочу, чтобы обнаружить circle-
Это то, что выходное изображение: -
I попытался сыграть с значениями радиуса размытия Гаусса и параметром minDist в преобразовании hough, но не получил большого успеха.
Может ли кто-нибудь указать мне в правильном направлении?
P.S- Некоторые из проблемных вопросов, но важных для моего проекта -
1. Мой компьютер занимает около 6-7 секунд, чтобы отобразить окончательное изображение. Мой код плохой или мой компьютер? Мои спецификации - Intel i3 M350 2,6 ГГц (первый генератор), 6 ГБ оперативной памяти, Intel HD Graphics 1000 1625 МБ.
2. Будет ли преобразование hough работать с двоичным пороговым изображением напрямую?
3. Будет ли этот код работать достаточно быстро на малине Pi 3 в реальном времени? (Я должен установить его на движущийся автономный робот.)
Спасибо!
Если на вашем рабочем столе для просмотра ** ONE ** требуется 6-7 секунд, как вы ожидаете, что он будет работать на гораздо более светлой малине в реальном времени, возможно, сделав 10 снимков в секунду? Поэтому вам, вероятно, нужно оптимизировать. – JeD
Это может быть быстрее на малине, так как вам не нужно рисовать круги, но все же – JeD
Нет ничего плохого в вашем компьютере, и ваш код, вероятно, в порядке. Преобразование Hough занимает много времени. Если вы посмотрите на [что это делает под капотом] (https://en.wikipedia.org/wiki/Hough_transform), это будет иметь смысл, почему. Это никогда не предназначалось для фильтрации в реальном времени. И да, вы должны применить его к двоичному пороговому изображению напрямую. –