Я пытаюсь создать программу, которая открывает изображение, сканирует его на предмет кругов / круглых форм и возвращает координаты, чтобы я мог использовать функцию cv.Circle
для рисования кругов над круг обнаружен.
У меня вопрос: как получить координаты / радиусы окружностей, обнаруженных на изображении, с помощью cv.HoughCircles ()
?
Используя эту страницу, я узнал, как определять круги (на это у меня ушло много времени, так как я не понимаю таких терминов, как порог, а документация OpenCV для Python очень плохая. , почти ничего). К сожалению, на этой странице этого не было. t показать, как извлечь информацию о каждом обнаруженном круге из созданного CvMat
. Как мне извлечь эту информацию / есть ли другой способ (например, с помощью MemoryStorage ()
)?
Это мой код:
import cv, opencv
def main():
im = cv.LoadImageM("Proba.jpg")
gray = cv.CreateImage(cv.GetSize(im), 8, 1)
edges = cv.CreateImage(cv.GetSize(im), 8, 1)
cv.CvtColor(im, gray, cv.CV_BGR2GRAY)
cv.Canny(gray, edges, 50, 200, 3)
cv.Smooth(gray, gray, cv.CV_GAUSSIAN, 9, 9)
storage = cv.CreateMat(im.rows, 1, cv.CV_32FC3)
cv.HoughCircles(edges, storage, cv.CV_HOUGH_GRADIENT, 2, gray.height/4, 200, 100)
# Now, supposing it found circles, how do I extract the information?
print storage.r
if __name__ == '__main__':
main()
Кроме того, какое значение имеют последние два параметра HoughCircles
должны быть, чтобы я мог обнаруживать действительно маленькие круги (например, 3 мм на экране)?
Спасибо всем за ваше время и усилия, пытающиеся помочь мне!
Изображение I ' m работает с этим: