Обработка изображений — OpenCV — Поиск площади и координат центра окружностей на изображении

У меня есть файл изображения. В нем есть несколько заполненных кругов и прямоугольников. Цвет заливки синий. Радиус кругов может варьироваться. Фон белый. Мне нужно найти:

  1. Координаты центра каждого круга.
  2. Площадь каждого круга.

Как мне это сделать?
Я использую OpenCV с C ++
Не могли бы вы написать код и объяснить ..
Или, пожалуйста, дайте мне несколько поисковых запросов, например, какие функции использовать и т. Д.

Я новичок в OpenCV и Stackoverflow …
Спасибо..

0

Решение

OpenCV имеет то, что называется Hough Circle Transform

По этой ссылке есть пример кода, который:

  1. Загружает изображение и размывает его, чтобы уменьшить шум
  2. Применяет Преобразование Hough Circle к размытому изображению.
  3. Отобразить обнаруженный круг в окне.

Ключевая часть:

  /// Apply the Hough Transform to find the circles
HoughCircles( src_gray, circles, CV_HOUGH_GRADIENT, 1, src_gray.rows/8, 200, 100, 0, 0 );

/// Draw the circles detected
for( size_t i = 0; i < circles.size(); i++ )
{
Point center(cvRound(circles[i][0]), cvRound(circles[i][1]));
int radius = cvRound(circles[i][2]);
// circle center
circle( src, center, 3, Scalar(0,255,0), -1, 8, 0 );
// circle outline
circle( src, center, radius, Scalar(0,0,255), 3, 8, 0 );
}

/// Show your results
namedWindow( "Hough Circle Transform Demo", CV_WINDOW_AUTOSIZE );
imshow( "Hough Circle Transform Demo", src );
0

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector