2015-07-28 2 views
0

Я пытаюсь получить центр кругов с использованием алгоритма Hough Circle от https://github.com/Itseez/opencv/blob/master/samples/cpp/houghcircles.cpp , но мне нужны более точные координаты.Точность центра с преобразованием окружности hough

Когда я получаю эти координаты, как это

for(size_t i = 0; i < circles.size(); i++) 
{ 
    Vec3i c = circles[i]; 
    cout<<c[0]<<" "<<c[1]<<endl; 
} 

печатает только целую часть. Есть ли возможность получить центр более точным (4 десятичных или более)?

+0

Возможный дубликат [Как я могу получить точную точку центра?] (Http://stackoverflow.com/questions/30958751/how-can-i-get-accurate-center-points) – anderas

ответ

0

Вы явно преобразуете координаты в целые числа, назначив их целочисленному вектору (Vec3i). Если вы печатаете их, как это, вы будете печатать значения, как вы получите их от OpenCV:

cout<<circles[0]<<" "<<circles[1]<<endl; 

Однако эти результаты могут быть не столь точны, как вы хотите. В этом случае вам не повезло с вашим текущим подходом, поскольку OpenCV не дает более точных результатов.

+0

Да, вы правы, но даже если мне нравится, что все значения выглядят как ---. 5, это всегда .5 Это не точно! Знаете ли вы какую-либо возможность найти их более точными? –

+0

См. Мой отредактированный ответ. Вероятно, вы не получите более точных результатов с помощью этого метода. Единственное, что вы могли бы попробовать, это установить параметр 'dp' в значение типа' 1./16', чтобы получить хэш-аккумулятор, который в 16 раз превышает разрешение изображения. Тем не менее, я не знаю, будет ли это на самом деле работать ... – anderas

Смежные вопросы