С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++: OpenCV
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ OpenCV Комплект Visual Studio + Qt + OpenCV не видит файлы библиотек Visual Studio + qt + opencv все установил как положено... Имеется код лабы для универа который надо просто продемонстрировать.... Но там имеется что то от qt... из за этого и был установлен qt 4.8.4... Выбивает ошибку: Не удается открыть файл include: QList: No such file or directory... #include <stdafx.h> #include <opencv/highgui.h> #include <opencv/cv.h> #include <QList> #include... https://www.cyberforum.ru/ cpp-opencv/ thread2041064.html OpenCV и Линукс C++ OpenCV
Добрый день. Пробую обучить каскад Хаара для openCV по материалам этого сайта Дохожу до создания приведенных файлов и все, клин. Выдает ошибку: pi@raspberrypi:~/Desktop/Haar $ opencv_createsamples -info Good.dat -vec samples.vec -w 30 -h 20 Info file name: Good.dat Img file name: (NULL) Vec file name: samples.vec
C++ OpenCV OPENCV QT Изменение движения https://www.cyberforum.ru/ cpp-opencv/ thread2035115.html
Здравствуйте! Возникла потребность создания программы, которая бы подключалась к веб камере (ну это с помощью QCamera можно реализовать), и при движении бровей, например, записывала бы координаты изменения движения. Прошу помощи в реализации алгоритма. Может какие функции подскажите. Буду рад любой информации.
C++ OpenCV OpenCV 360 player https://www.cyberforum.ru/ cpp-opencv/ thread2033923.html
Доброго времени!) Есть задача написать плеер для проигрывания видео 360. (В идеале на два глаза, но для начала пойдет и на 1 ^_^ ) Понятное дело, что никто за меня это делать не будет, поэтому прошу сугубо совета. В сторону каких функций в опенсв стоит смотреть, есть ли в ней (библиотеке) подходящие инструменты для данной задачи? А если быть точнее, как натягивать видео на сферу? (это...
C++ OpenCV Windows form + opencv
Всем привет! Хочу вывести изображение с веб камеры на форму по нажатию кнопки используя OpenCV 3.1.0 и visual studio 2015. У меня проблема с выводом кадра в pictureBox1, а конкретно с незнанием, как это сделать. Как открыть камеру я разобрался (Camera.cpp) Очень хочу разобраться (свои размышления сделал в виде комментариев в camera.cpp скорей всего я не прав и хотел бы узнать, как правильно )...
C++ OpenCV Загрузка изображения из файла с библиотекой openCV VS2015 Не работает загрузка изображения из файла. Переменная после использования фунцкии из библиотеки opencv cvLoadImage остается "пустой". Можно ли использовать другие функции или что здесь неправильно? https://www.cyberforum.ru/ cpp-opencv/ thread2029032.html
C++ OpenCV Opencv одинаковые точки День добрый. как на этих двух изображениях найти похожие места? https://www.cyberforum.ru/ cpp-opencv/ thread2025768.html C++ OpenCV Сборка под qt opencv
Уже пару часиков пытаюсь по этому гайду собрать opencv под qt, но в шаге 3 при mingw32-make доходит до 20+% и выдает такое, что может быть не так?
C++ OpenCV Как подключить OpenCV к Qt? https://www.cyberforum.ru/ cpp-opencv/ thread2023215.html
Помогите! Сделал всё как сказано https://wiki.qt.io/How_to_setup_Qt_and_openCV_on_Windows ошибок при сборке не было но в результате выкидывает такое: Я понимаю что значит эта ошибка - неверная ссылка на функцию, но как это исправить? вроде же dll все подключил п.с. Пост https://www.cyberforum.ru/qt/thread965283-page2.html смотрел, но там человек решил проблему старой библиотекой
C++ OpenCV Opencv красную часть картинки сделать белой https://www.cyberforum.ru/ cpp-opencv/ thread2021447.html
Всем привет! Немогу решить проблему. Имеется картинка и нужно все пиксели в картинке красного цвета заменить на белый, использую библиотеку opencv.
Qt opencv определение зеленых ячеек в картинке C++ OpenCV
Всем привет. Нужно на картинке определеть ячейки зеленого цвета. Используя opencv можно сделать. В интернете найшел вот такой подход: https://github.com/sol-prog/OpenCV-red-circle-detection/blob/master/circle_detect.cpp как сделать для зеленого цвета.
C++ OpenCV OpenCV распознавание электрических элементов на схеме Всем доброго времени суток. Не так давно познакомился с OpenCV. Хотелось бы уточнить у знающих в этом направлении, возможно ли с помощью OpenCV решить такую задачу как распознавание на схеме автоматических выключателей, диф.автоматов, рубильников + к этому определять по надписям производителя (АВВ, ИЕК и др.). В итоге на выходе получалась бы спецификация оборудования. Подскажите пожалуйста,... https://www.cyberforum.ru/ cpp-opencv/ thread2020260.html
21 / 55 / 9
Регистрация: 29.09.2011
Сообщений: 609
20.09.2017, 23:52  [ТС] 0

Использование OpenCV для распознавания рисунков - C++ OpenCV - Ответ 10767925

20.09.2017, 23:52. Показов 2032. Ответов 7
Метки (Все метки)

Ответ

ImageProcessor.cpp
2 часть.

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
/** Поиск картинки по скриншоту с маской. Нормировка. Делает скриншот и отдаёт в виде аргумента. */
void ImageProcessor::mtNormGiveScr          (cv::Mat& src, cv::Mat* templ, cv::Mat* result, cv::Mat* mask, double &minval, double &maxval, cv::Point &minLoc, cv::Point &maxLoc, int x, int y, int width, int height, int mtmode){
    src = *getScreenshot(x, y, width, height);
    mtNormMM(&src, templ, result, mask, minval, maxval, minLoc, maxLoc, mtmode);
}
/** Поиск картинки по скриншоту с маской. Нормировка. Скриншот создаёт сам. */
void ImageProcessor::mtNormMakeScr          (cv::Mat* templ, cv::Mat* result, cv::Mat* mask, double &minval, double &maxval, cv::Point &minLoc, cv::Point &maxLoc, int x, int y, int width, int height, int mtmode){
    cv::Mat src = *getScreenshot(x, y, width, height);
    mtNormMM(&src, templ, result, mask, minval, maxval, minLoc, maxLoc, mtmode);
}
/** Поиск картинки по скриншоту. Нормировка. Делает скриншот и отдаёт в виде аргумента. */
void ImageProcessor::mtNormGiveScr          (cv::Mat& src, cv::Mat* templ, cv::Mat* result, double &minval, double &maxval, cv::Point &minLoc, cv::Point &maxLoc, int x, int y, int width, int height, int mtmode){
    src = *getScreenshot(x, y, width, height);
    mtNormMM(&src, templ, result, minval, maxval, minLoc, maxLoc, mtmode);
}
/** Поиск картинки по скриншоту. Нормировка. Скриншот создаёт сам. */
void ImageProcessor::mtNormMakeScr          (cv::Mat* templ, cv::Mat* result, double &minval, double &maxval, cv::Point &minLoc, cv::Point &maxLoc, int x, int y, int width, int height, int mtmode){
    cv::Mat src = *getScreenshot(x, y, width, height);
    mtNormMM(&src, templ, result, minval, maxval, minLoc, maxLoc, mtmode);
}
 
/** Поиск картинки по скриншоту с маской. Делает скриншот и отдаёт в виде аргумента. */
void ImageProcessor::mtGiveScr              (cv::Mat& src, cv::Mat* templ, cv::Mat* result, cv::Mat* mask, double &minval, double &maxval, cv::Point &minLoc, cv::Point &maxLoc, int x, int y, int width, int height, int mtmode){
    src = *getScreenshot(x, y, width, height);
    mt(&src, templ, result, mask, mtmode);
}
/** Поиск картинки по скриншоту с маской. Скриншот создаёт сам. */
void ImageProcessor::mtMakeScr              (cv::Mat* templ, cv::Mat* result, cv::Mat* mask, double &minval, double &maxval, cv::Point &minLoc, cv::Point &maxLoc, int x, int y, int width, int height, int mtmode){
    cv::Mat src = *getScreenshot(x, y, width, height);
    mt(&src, templ, result, mask, mtmode);
}
/** Поиск картинки по скриншоту. Делает скриншот и отдаёт в виде аргумента. */
void ImageProcessor::mtGiveScr              (cv::Mat& src, cv::Mat* templ, cv::Mat* result, double &minval, double &maxval, cv::Point &minLoc, cv::Point &maxLoc, int x, int y, int width, int height, int mtmode){
    src = *getScreenshot(x, y, width, height);
    mt(&src, templ, result, mtmode);
}
/** Поиск картинки по скриншоту. Скриншот создаёт сам. */
void ImageProcessor::mtMakeScr              (cv::Mat* templ, cv::Mat* result, double &minval, double &maxval, cv::Point &minLoc, cv::Point &maxLoc, int x, int y, int width, int height, int mtmode){
    cv::Mat src = *getScreenshot(x, y, width, height);
    mt(&src, templ, result, mtmode);
}
 
float ImageProcessor::mtNormMMDiff              (cv::Mat* src, cv::Mat* templ, cv::Mat* result, cv::Mat* mask, double &minval, double &maxval, cv::Point &minLoc, cv::Point &maxLoc, int mtmode){
    mtNormMM(src, templ, result, mask, minval, maxval, minLoc, maxLoc, mtmode);
    cv::circle(*result, minLoc, (templ->cols + templ->rows)/2 , cv::Scalar(255), -1 );
    double minval2, maxval2;
    cv::Point minLoc2, maxLoc2;
    cv::minMaxLoc(*result, &minval2, &maxval2, &minLoc2, &maxLoc2);
    return minval2 - minval;
}
float ImageProcessor::mtNormMMDiff              (cv::Mat* src, cv::Mat* templ, cv::Mat* result, double &minval, double &maxval, cv::Point &minLoc, cv::Point &maxLoc, int mtmode){
    mtNormMM(src, templ, result, minval, maxval, minLoc, maxLoc, mtmode);
    cv::circle(*result, minLoc, (templ->cols + templ->rows)/2 , cv::Scalar(255), -1 );
    double minval2, maxval2;
    cv::Point minLoc2, maxLoc2;
    cv::minMaxLoc(*result, &minval2, &maxval2, &minLoc2, &maxLoc2);
    return minval2 - minval;
}
 
float ImageProcessor::mtMMDiff                  (cv::Mat* src, cv::Mat* templ, cv::Mat* result, cv::Mat* mask, double &minval, double &maxval, cv::Point &minLoc, cv::Point &maxLoc, int mtmode){
    mtMM(src, templ, result, mask, minval, maxval, minLoc, maxLoc, mtmode);
    cv::circle(*result, minLoc, (templ->cols + templ->rows)/2 , cv::Scalar(255), -1 );
    double minval2, maxval2;
    cv::Point minLoc2, maxLoc2;
    cv::minMaxLoc(*result, &minval2, &maxval2, &minLoc2, &maxLoc2);
    return minval2 - minval;
}
float ImageProcessor::mtMMDiff                  (cv::Mat* src, cv::Mat* templ, cv::Mat* result, double &minval, double &maxval, cv::Point &minLoc, cv::Point &maxLoc, int mtmode){
    mtMM(src, templ, result, minval, maxval, minLoc, maxLoc, mtmode);
    cv::circle(*result, minLoc, (templ->cols + templ->rows)/2 , cv::Scalar(255), -1 );
    double minval2, maxval2;
    cv::Point minLoc2, maxLoc2;
    cv::minMaxLoc(*result, &minval2, &maxval2, &minLoc2, &maxLoc2);
    return minval2 - minval;
}
 
float ImageProcessor::mtNormMMGiveScrDiff       (cv::Mat& src, cv::Mat* templ, cv::Mat* result, cv::Mat* mask, double &minval, double &maxval, cv::Point &minLoc, cv::Point &maxLoc, int x, int y, int width, int height, int mtmode){
    mtNormMMGiveScr(src, templ, result, mask, minval, maxval, minLoc, maxLoc, x, y, width, height, mtmode = 1);
    cv::circle(*result, minLoc, (templ->cols + templ->rows)/2 , cv::Scalar(255), -1 );
    double minval2, maxval2;
    cv::Point minLoc2, maxLoc2;
    cv::minMaxLoc(*result, &minval2, &maxval2, &minLoc2, &maxLoc2);
    return minval2 - minval;
}
float ImageProcessor::mtNormMMMakeScrDiff       (cv::Mat* templ, cv::Mat* result, cv::Mat* mask, double &minval, double &maxval, cv::Point &minLoc, cv::Point &maxLoc, int x, int y, int width, int height, int mtmode){
    mtNormMMMakeScr(templ, result, mask, minval, maxval, minLoc, maxLoc, x, y, width, height, mtmode = 1);
    cv::circle(*result, minLoc, (templ->cols + templ->rows)/2 , cv::Scalar(255), -1 );
    double minval2, maxval2;
    cv::Point minLoc2, maxLoc2;
    cv::minMaxLoc(*result, &minval2, &maxval2, &minLoc2, &maxLoc2);
    return minval2 - minval;
}
float ImageProcessor::mtNormMMGiveScrDiff       (cv::Mat& src, cv::Mat* templ, cv::Mat* result, double &minval, double &maxval, cv::Point &minLoc, cv::Point &maxLoc, int x, int y, int width, int height, int mtmode){
    mtNormMMGiveScr(src, templ, result, minval, maxval, minLoc, maxLoc, x, y, width, height, mtmode = 1);
    cv::circle(*result, minLoc, (templ->cols + templ->rows)/2 , cv::Scalar(255), -1 );
    double minval2, maxval2;
    cv::Point minLoc2, maxLoc2;
    cv::minMaxLoc(*result, &minval2, &maxval2, &minLoc2, &maxLoc2);
    return minval2 - minval;
}
float ImageProcessor::mtNormMMMakeScrDiff       (cv::Mat* templ, cv::Mat* result, double &minval, double &maxval, cv::Point &minLoc, cv::Point &maxLoc, int x, int y, int width, int height, int mtmode){
    mtNormMMMakeScr(templ, result, minval, maxval, minLoc, maxLoc, x, y, width, height, mtmode = 1);
    cv::circle(*result, minLoc, (templ->cols + templ->rows)/2 , cv::Scalar(255), -1 );
    double minval2, maxval2;
    cv::Point minLoc2, maxLoc2;
    cv::minMaxLoc(*result, &minval2, &maxval2, &minLoc2, &maxLoc2);
    return minval2 - minval;
}
 
float ImageProcessor::mtMMGiveScrDiff           (cv::Mat& src, cv::Mat* templ, cv::Mat* result, cv::Mat* mask, double &minval, double &maxval, cv::Point &minLoc, cv::Point &maxLoc, int x, int y, int width, int height, int mtmode){
    mtMMGiveScr(src, templ, result, mask, minval, maxval, minLoc, maxLoc, x, y, width, height, mtmode = 1);
    cv::circle(*result, minLoc, (templ->cols + templ->rows)/2 , cv::Scalar(255), -1 );
    double minval2, maxval2;
    cv::Point minLoc2, maxLoc2;
    cv::minMaxLoc(*result, &minval2, &maxval2, &minLoc2, &maxLoc2);
    return minval2 - minval;
}
float ImageProcessor::mtMMMakeScrDiff           (cv::Mat* templ, cv::Mat* result, cv::Mat* mask, double &minval, double &maxval, cv::Point &minLoc, cv::Point &maxLoc, int x, int y, int width, int height, int mtmode){
    mtMMMakeScr(templ, result, mask, minval, maxval, minLoc, maxLoc, x, y, width, height, mtmode = 1);
    cv::circle(*result, minLoc, (templ->cols + templ->rows)/2 , cv::Scalar(255), -1 );
    double minval2, maxval2;
    cv::Point minLoc2, maxLoc2;
    cv::minMaxLoc(*result, &minval2, &maxval2, &minLoc2, &maxLoc2);
    return minval2 - minval;
}
float ImageProcessor::mtMMGiveScrDiff           (cv::Mat& src, cv::Mat* templ, cv::Mat* result, double &minval, double &maxval, cv::Point &minLoc, cv::Point &maxLoc, int x, int y, int width, int height, int mtmode){
    mtMMGiveScr(src, templ, result, minval, maxval, minLoc, maxLoc, x, y, width, height, mtmode = 1);
    cv::circle(*result, minLoc, (templ->cols + templ->rows)/2 , cv::Scalar(255), -1 );
    double minval2, maxval2;
    cv::Point minLoc2, maxLoc2;
    cv::minMaxLoc(*result, &minval2, &maxval2, &minLoc2, &maxLoc2);
    return minval2 - minval;
}
float ImageProcessor::mtMMMakeScrDiff           (cv::Mat* templ, cv::Mat* result, double &minval, double &maxval, cv::Point &minLoc, cv::Point &maxLoc, int x, int y, int width, int height, int mtmode){
    mtMMMakeScr(templ, result, minval, maxval, minLoc, maxLoc, x, y, width, height, mtmode = 1);
    cv::circle(*result, minLoc, (templ->cols + templ->rows)/2 , cv::Scalar(255), -1 );
    double minval2, maxval2;
    cv::Point minLoc2, maxLoc2;
    cv::minMaxLoc(*result, &minval2, &maxval2, &minLoc2, &maxLoc2);
    return minval2 - minval;
}


Вернуться к обсуждению:
Использование OpenCV для распознавания рисунков C++ OpenCV
0
Заказать работу у эксперта
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.09.2017, 23:52
Готовые ответы и решения:

Распознавания дорожных знаков с помощью OpenCV
Здравствуйте! Передо мной поставлена задача распознавания дорожных знаков с помощью OpenCV....

Использование библиотеки openCV 3.0
Здравствуйте! У меня проблема с библиотекой openCV. С openCV я столкнулась впервые, так что ничего...

Использование Arduino для распознавания команд с ИК пульта от ТВ
Всем привет! Я собрал на основе UNO устройство для считывания ИК сигнала с телевизионных лентяек....

Алгоритм распознавания лиц в openCV
#include &quot;opencv2/opencv.hpp&quot; #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;sstream&gt; ...

7
20.09.2017, 23:52
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.09.2017, 23:52
Помогаю со студенческими работами здесь

Использование Google Voice Search для распознавания речи
Доброго времени суток! Нарыл в интернете статейку по использовании Google Voice Search с исходником...

Как сделать систему распознавания образов на OpenCV
Добрый вечер. Я знаю, что в OpenCV существует алгоритм, использующий классификаторы Хаара для...

Использование прозрачности Png рисунков.
Всем привет! Думаю каждый когда то видел приложение с полупрозрачным фоном формы, причем компоненты...

использование OpenCV
Если кто-то использовал OpenCV &amp;&amp; C++/CLI подскажите что нужно делать

0
Новые блоги и статьи
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
Использование GraphQL в Go (Golang)
InfoMaster 08.01.2025
Go (Golang) является одним из наиболее популярных языков программирования, используемых для создания высокопроизводительных серверных приложений. Его архитектурные особенности и встроенные. . .
Что лучше использовать при создании класса в Java: сеттеры или конструктор?
Alexander-7 08.01.2025
Вопрос подробнее: На вопрос: «Когда одновременно создаются конструктор и сеттеры в классе – это нормально?» куратор уточнил: «Ваш класс может вообще не иметь сеттеров, а только конструктор и геттеры. . .
Как работать с GraphQL на TypeScript
InfoMaster 08.01.2025
Введение в GraphQL и TypeScript В современной разработке веб-приложений GraphQL стал мощным инструментом для создания гибких и эффективных API. В сочетании с TypeScript, эта технология. . .
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru