Я пытаюсь создать программу, которая открывает изображение, просматривает его для кругов/круглых фигур и возвращает координаты, чтобы я мог использовать функцию cv.Circle
для рисования кругов по обнаруженному кругу.
Мой вопрос: как получить координаты/радиусы окружностей, обнаруженных на изображении, используя cv.HoughCircles()
?
Используя эту страницу, я узнал, как определить круги (мне потребовалось много времени, чтобы узнать, так как я не понимаю таких терминов, как порог и документация OpenCV для Python действительно бедна, почти нет). К сожалению, на этой странице он не показывал, как извлекать информацию о каждом круге, обнаруженном из созданного 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 мм на экране)?
Спасибо всем за ваше время и силы, пытаясь помочь мне!
Изображение, с которым я работаю, это: