Точность центра с преобразованием окружности Хафа

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

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

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

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


person Mahagney Saleh    schedule 28.07.2015    source источник
comment
возможный дубликат Как я могу получить точные центральные точки?   -  person anderas    schedule 28.07.2015


Ответы (1)


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

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

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

person anderas    schedule 28.07.2015
comment
Да, вы правы, но даже если мне нравится, что все значения выглядят как ---.5, это всегда .5, это не точно! Знаете ли вы какую-либо возможность найти их более точными? - person Mahagney Saleh; 28.07.2015
comment
Смотрите мой отредактированный ответ: вы, вероятно, не получите более точных результатов с помощью этого метода. Единственное, что вы можете попробовать, это установить для параметра dp значение, подобное 1./16, чтобы получить аккумулятор, который в 16 раз превышает разрешение изображения. Однако я не знаю, сработает ли это на самом деле... - person anderas; 28.07.2015