Python и OpenCV. Как мне обнаружить все (закрашенные) круги / круглые объекты на изображении?

Я пытаюсь создать программу, которая открывает изображение, сканирует его на предмет кругов / круглых форм и возвращает координаты, чтобы я мог использовать функцию 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 работает с этим: enter image description here

18
задан Community 23 May 2017 в 12:09
поделиться