Я использую opencv и java для поиска кругов на изображении, у меня есть изображение ниже. Я использую Хью, чтобы найти окружности с кодом, как это:Найти обработку изображений окружностей
Imgproc.medianBlur(result, result, 3);
Imgproc.medianBlur(result, result, 3);
Imgproc.medianBlur(result, result, 3);
Mat circles = new Mat();
Imgproc.HoughCircles(result, circles, Imgproc.CV_HOUGH_GRADIENT, 1, 1, 200, 100, 30, 40);
System.out.println(circles.dump());
Но я получаю пустой коврик для результата с и без размытия. Как мне исправить этот код?
EDIT: Привет, ребята!
Благодаря вам у меня есть эта фотография сейчас. Я использую эти параметры:
Imgproc.HoughCircles(result, circles, Imgproc.CV_HOUGH_GRADIENT, 1, 20, 50, 10, 10, 40);
Я до сих пор использую медианный блеск перед обнаружением.
Остается вопрос, почему он обнаруживает эти маленькие круги? Я приложил результат обнаружения canny, я думаю, что круги довольно заметны.
Мат может быть использован в качестве контейнера для вектора точек в OpenCV. Большинство функций, которые принимают вектор точек, будут принимать Mat и работать с ним. На самом деле, несколько версий OpenCV назад некоторые функции требовали от вектора каста к Mat. Но я согласен с тем, что использование Mat вместо вектора является чем-то запутанным. –
Я использую Mat, потому что функция требует Mat в Java, и я получил только 3 значения в Mat, когда нашел только один круг. @MichaelBurdinov –