Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ под Linux

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
raging
0 / 0 / 0
Регистрация: 31.01.2014
Сообщений: 3
#1

[OpenCV] Выделение кругов и работа с ними - C++ Linux

27.02.2014, 12:39. Просмотров 1805. Ответов 1
Метки нет (Все метки)

Всем доброго времени суток!
В ходе работы с OpenCV на Raspberry Pi возник вопрос:
Я нахожу круги на изображении используя cvHoughCircles, затем в примере также была функция отрисовки кругов на изображении, но как работать с ними (получить координаты центра, посчитать радиус, диаметр в пикселях и т.п.) я не понимаю. Результат возвращается в некий CvSeq* result, но вроде бы есть и само хранилище для этих кругов CvMemStorage* storage. Просьба помочь разобраться и/или ткнуть где можно почитать.

Отрывок исходника, если нужно предоставлю весь:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//////////////////////////////////////Выделение кругов/////////////////////////////
        // хранилище памяти для кругов
        CvMemStorage* storage = cvCreateMemStorage(0);
        // сглаживаем изображение
        cvSmooth(dst, dst, CV_GAUSSIAN, 7, 7 );
        // поиск кругов
        CvSeq* results = cvHoughCircles( 
                dst, 
                storage, 
                CV_HOUGH_GRADIENT, 
                3, 
                image->width*6,
                7,
                100,
                image->width/7,
                image->width/4-10
                ); 
        // пробегаемся по кругам и рисуем их на оригинальном изображении
     for( int i = 0; i < results->total; i++ ) {
                float* p = (float*) cvGetSeqElem( results, i );
                
                CvPoint pt = cvPoint( cvRound( p[0] ), cvRound( p[1] ) );
                cvCircle( dst, pt, cvRound( p[2] ), CV_RGB(255,255,255) );
        }
     
                char c = cvWaitKey(33);
                if (c == 27) { // нажата ESC
                        break;
                }
Заранее спасибо

Добавлено через 22 часа 14 минут
Все оказалось несколько проще, чем думалось)
В случае если кому-нибдуь нужно решение - обращайтесь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.02.2014, 12:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос [OpenCV] Выделение кругов и работа с ними (C++ Linux):

Выделение объектов в рамку Opencv - C++
Здравствуйте! В моей программе сохраняется фон, затем в режиме реального времени фиксируются пиксели, отличные от ранее сохраненного фона....

Работа с OpenCV, нахождение параметров обьектов - C++
Здравствуйте, Мне нужно сделать один проект по учебе, речь идет о програмированнии одной программки. Задача следующая: в распоряжении...

Изменение площади нарисованных кругов и расстояния между ними - C#
Суть такая. Вообщем имеется модель. Необходимо сделать так чтобы можно было менять площадь кругов ( всех по отдельности) и также...

Определить, в каком из кругов находится наибольшее число кругов из данного множества кругов - PascalABC.NET
Круг задается радиусом и координатами центра. Имеется n кругов (n20). Определить, в каком из кругов находится наибольшее число кругов из...

OpenCV Выделение связных областей - C++
Вопрос есть ли реализация алгоритма выделение связных областей в OpenCV ? (Искал не нашел, да хз как оно звучит на английском) ...

Наследование: выделение память 2 способами - какая между ними разница - C++
Доброй ночи! Целый год все было нормально, а этой ночью что-то случилось с моей головой. Я в итоге полностью запутался с наследованием...

1
AlenaAS0017
0 / 0 / 0
Регистрация: 27.10.2015
Сообщений: 1
22.11.2016, 18:53 #2
Добрый вечер! Знаю тема уже была создана 2 года назад, но всё же. Я столкнулась с такое же проблемой. Хотелось бы узнать как вы смогли получить радиус.
Заранее спасибо
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2016, 18:53
Привет! Вот еще темы с ответами:

Имеется кольцо с известными радиусами внутреннего и внешнего кругов. Определить окружностей обоих кругов,атакже площадь кольца. - C++
Имеется кольцо с известными радиусами внутреннего и внешнего кругов. Определить окружностей обоих кругов,атакже площадь кольца.

Работа с opencv - C (СИ)
Добрый день, написал немного кода с использованием opencv #include &quot;opencv\cv.h&quot; #include &quot;opencv\highgui.h&quot; #include &lt;stdlib.h&gt; ...

Работа с библиотеками openCV - C++
Пытаюсь запустить код по распознаванию лиц, использующий библиотеки opencv. Все библиотеки были установлены в согласии с разными...

Работа с библиотекой opencv - C++
Добрый день! Я установил opencv 2.4.13 на vs12, настроил несколько раз, но у меня выдает ошибку: &quot;Ошибка 1 error LNK1104: не удается...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru