Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 26.04.2018
Сообщений: 30

Как в QT+OpenCV выводить на экран размер найденного контура

11.05.2021, 14:30. Показов 2055. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть программа для поиска дефектов на изображении (используется QT+библиотека OpenCV). Необходимо добавить определение размера найденного дефекта (площадь найденного контура) и выводить ее на экран. Представленная ниже программа выводит какие-то размеры (мое предположения, что они представлены в пикселях), КАК МОЖНО ОСУЩЕСТВИТЬ ВЫВОД РАЗМЕРОВ В МИЛИММЕТРАХ, в каком месте нужно добавить коэффициент перевода. Или программа вообще считает не то, что нужно


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
30
31
32
33
34
35
void MainWindow::getContours(Mat imgDil, Mat img)
{
 
    vector<vector<Point>> contours;
    vector<Vec4i> hierarchy;
    findContours(imgDil, contours, hierarchy,RETR_LIST, CHAIN_APPROX_NONE);
 
///////////// Фильтр по контуру фигур (круг)////////////////
 
    for (int i=0; i < contours.size(); i++)
    {
        double area = contourArea(contours[i]);//возвращает площадь контура
 
        qDebug() << " Area: " <<  area  << endl;
 
         double perim = arcLength(contours[i],true);//возвращает периметр
 
        qDebug() <<  " Perim: " << perim << endl;
 
        //Фильтрация по размеру области
        if (area / (perim * perim) > 0.01 && area / (perim * perim)< 0.09 )
        {
            drawContours(img,contours, i, Scalar(255,0,255),7);
 
//////////////////////////////////// ВЫВОД РАЗМЕРА ДЕФЕКТА
           char text[] ="" ;
            Rect brect = boundingRect(contours[i]);
            sprintf(text,"S = %d", brect.area());
            string str(text);
                putText(img,str, Point(brect.x+20, brect.y+20), 1, 1, CV_RGB(0,255,0));
                imshow("Image", img);
///////////////////////////////////
        }
 }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.05.2021, 14:30
Ответы с готовыми решениями:

Opencv Как найти координаты в рамке контура?
Доброго времени суток. Я только начинаю изучать python и срочно возникла необходимость решить одну задачу связанную с нахождением...

OpenCV точки контура
Здравствуйте, прошу ответить мне на вопрос или &quot;пнуть&quot; в нужном направлении. Написал код определяющий нужный мне контур: #include...

Opencv , CvSeq , координаты контура.
Здравствуйте форумчане. Может ктото знает как найти координаты контура (крайние точки ну или центр) в Opencv. Координаты получаю...

2
26 / 24 / 1
Регистрация: 29.06.2018
Сообщений: 199
13.05.2021, 16:23
C++ (Qt)
1
double area = contourArea(contours[i]);//возвращает площадь контура
- это ли не то что вам надо? только нужно разобраться в каких единицах оно вам возвращает, вероятно в пикселях)) если известны реальные размеры или есть калибровка, то можно перевести.
0
0 / 0 / 0
Регистрация: 26.04.2018
Сообщений: 30
13.05.2021, 16:46  [ТС]
Да, но проблема именно в выводе этих размеров на изображение, когда я пытаюсь до множить на какой-то коэффициент.
Эта строчка возвращает площадь
C++
1
 double area = contourArea(contours[i]);//возвращает площадь контура
а для вывода на экран я использую вот это
C++
1
2
3
4
5
6
char text[] ="" ;
            Rect brect = boundingRect(contours[i]);
            sprintf(text,"S = %d", brect.area());
            string str(text);
                putText(img,str, Point(brect.x+20, brect.y+20), 1, 1, CV_RGB(0,255,0));
                imshow("Image", img);
и вот тут возникает проблема, когда я пытаюсь добавить коэф.перевода пикселей в мм
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.05.2021, 16:46
Помогаю со студенческими работами здесь

Как ориентируясь на размер экрана выводить ту или иную версию всплывающего окна
Здравствуйте!сделал всплывающие формы,cделал так что бы они появлялись через определенное время. Что делать если не работает!!! ...

Как выводить utf-8 на экран?
Как у вас обстоят дела с выводом UTF-8 на консоль windows? UTF-16 она не поддерживает, но похоже что у нее (или у меня) и с UTF-8 проблемы....

Как выводить процесс загрузки на экран?
Можно ли в Джаве организовать подробный вывод процесса загрузки, скажем, игры? Что-нибудь вроде &quot;загрузка моделей&quot;,...

Как выводить вводимые числа на экран?
Возник вопрос как в выходном сообщении выводить введенные ранее числа на экран? Пример на рисунке - в прикрепленном файле. код: ...

Как выводить на экран вещественные числа (MFC)?
Как выводит на экран дробные числа?


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru