В формате OpenCV Линукс преобразования Хафа круг


Я использую код из страницы. Это работает на большинстве моих изображений. Но на прикрепленном изображении он не работает-код не распознает внешний циферблат / границу датчика (в моем исходном изображении нет внутреннего белого круга) Введите описание изображения здесь

Есть идеи, что может пойти не так?

1 2

1 ответ:

Это то, что вы ищете...

Введите описание изображения здесь

Если это так, то речь идет о настройке нескольких параметров. В частности, минимальный и максимальный радиус окружности и circle_distance (минимальное расстояние между обнаруженными окружностями).

СутьЗдесь .

Обновить
если вы хотите связать минимальный радиус с размерами изображения, вы можете сделать что-то вроде этого:

float minRadius = MIN(img.size().width, img.size().height) * 0.5;

И передайте это в функцию houghCircles.

Параметры я фактически используется (согласно сути):

 HoughCircles(     img
                 , circles
                 , CV_HOUGH_GRADIENT //method – Detection method to use. 
                 // Currently,  the only implemented method is 
                 // CV_HOUGH_GRADIENT , which is  basically 21HT , 
                 // described in [Yuen90].
                 , 1 //p – Inverse ratio of the accumulator resolution to the 
                 // image resolution. For example, if dp=1 , the accumulator has 
                 // the same resolution as the input image. If dp=2 , 
                 // the accumulator has half as big width and height.
                 , 60  //minDist – Minimum distance between the centers of the 
                 // detected circles. If the parameter is too small, multiple 
                 // neighbor circles may be falsely detected in addition to a 
                 // true one. If it is too large, some circles may be missed.
                 , 100 //cannyThreshold – The higher threshold of the two 
                 // passed  to the gpu::Canny() edge detector 
                 // (the lower one is twice smaller).
                 , 30 //votesThreshold – The accumulator threshold for the circle 
                 // centers at the detection stage. The smaller it is, the more 
                 // false circles may be detected.
                 , 250 //minRadius – Minimum circle radius.
                 , 300 //maxRadius – Maximum circle radius.
                 );

Комментарии взяты издокументации openCV .