@@ -15,7 +15,7 @@ __Цель данной работы__ - изучить базовые прим
15
15
(методы класса ` cv::Mat ` для представления изображения).
16
16
- Обработка изображений с помощью простеших фильтров модуля ` opencv_imgproc `
17
17
(линейные фильтры, вычисление градиентов на изображении).
18
- - Основные операции модуля ` opencv_highgui ` (загрузка изображения
18
+ - Основные операции модуля ` opencv_highgui ` (загрузка изображения
19
19
средствами ` imread ` , сохранение изображения с использованием
20
20
` imwrite ` , отображение изображения с помощью функций ` imshow ` и ` waitKey ` ,
21
21
реализация сложных сценариев обработки событий).
@@ -24,14 +24,14 @@ __Цель данной работы__ - изучить базовые прим
24
24
25
25
Структура проекта:
26
26
27
- - ` sample_template ` - исходные коды шаблонного проекта. Шаблонное
28
- приложение отображает исходное изображение и изображение, полученное
29
- в результате медианной фильтрации центральной части исходного изображения.
27
+ - ` sample_template ` - исходнодные коды шаблонного проекта. Шаблонное
28
+ приложение отображает исходное изображение и изображение, полученное в
29
+ результате медианной фильтрации центральной части исходного изображения.
30
30
Также в окне имеется 2 кнопки, позволяющие включить/отключить действие
31
31
фильтра.
32
32
- ` testdata ` - директория с данными для тестов.
33
- - ` .gitignore ` - перечень расширений файлов, которые не выкладываются
34
- в проект.
33
+ - ` .gitignore ` - перечень расширений файлов, которые не выкладываются в
34
+ проект.
35
35
- ` .travis.yml ` - конфигурационный файл для системы автоматического
36
36
тестирования Travis-CI.
37
37
- ` CMakeLists.txt ` - общий файл для сборки проекта с помощью CMake.
@@ -45,12 +45,12 @@ __Цель данной работы__ - изучить базовые прим
45
45
- Модуль ` processing ` содержит метод медианной фильтрации центральной области
46
46
изображения.
47
47
- Модуль графичекого приложения ` application ` . Содержит метод обработки
48
- аргументов командной строки ` parseArguments ` ; обертку ` processFrame `
49
- над функцией обработки изображения с использованием метода,
50
- реализованного в модуле ` processing ` ; метод отображения окна с двуми
51
- изображениями - исходным и обработанным, если фильтр включен, либо двумя
52
- исходными, если фильтр выключен; методы, необходимые для обработки событий
53
- нажатия на кнопки включение/выключения фильтра.
48
+ аргументов командной строки ` parseArguments ` ; обертку ` processFrame ` над
49
+ функцией обработки изображения с использованием метода, реализованного в
50
+ модуле ` processing ` ; метод отображения окна с двуми изображениями - исходным
51
+ и обработанным, если фильтр включен, либо двумя исходными, если фильтр
52
+ выключен; методы, необходимые для обработки событий нажатия на кнопки
53
+ включение/выключения фильтра.
54
54
55
55
## Задачи
56
56
@@ -76,17 +76,17 @@ __Дополнительные задачи:__
76
76
## Общая последовательность действий
77
77
78
78
1 . Сделать форк upstream-репозитория, затем клонировать origin к себе на
79
- локальную машину. Для инструкций смотри раздел [ Общие инструкции по работе с Git ] [ git-intro ] в
80
- [ практической работе 1] [ practice1 ] .
79
+ локальную машину. Для инструкций смотри раздел
80
+ [ Общие инструкции по работе с Git ] [ git-intro ] в [ практической работе 1] [ practice1 ] .
81
81
2 . Скомпилировать и запустить сэмпл на картинке (раздел
82
82
[ Сборка проекта с помощью CMake и MS VS] [ cmake-msvs ]
83
83
в [ практической работе 1] [ practice1 ] .
84
84
4 . Создать копию директории с сэмплом, добавить ее построение в корневой
85
85
` CMakeLists.txt ` .
86
86
5 . Убедиться, что новый сэмпл успешно собирается и запускается.
87
- 6 . Прислать Pull Request с еще неизмененным сэмплом. Пометить в конце
88
- названия ` (NOT READY) ` . По мере готовности решений основных задач Pull
89
- Request можно будет переименовать.
87
+ 6 . Прислать Pull Request с еще неизмененным сэмплом. Пометить в конце названия
88
+ ` (NOT READY) ` . По мере готовности решений основных задач Pull Request можно
89
+ будет переименовать.
90
90
7 . Сделать так, чтобы регион фильтрации менял со временем свое положение и
91
91
размеры. Обновить Rull Request.
92
92
4 . Добавить третью кнопку, позволяющую сохранить текущее изображение на
@@ -134,15 +134,15 @@ __Дополнительные задачи:__
134
134
cv::Rect region(src.rows/4, src.cols/4, src.rows/2, src.cols/2);
135
135
```
136
136
137
- 2. При генерации следует учитывать, что окно фильтрации должно попадать
138
- в область изображения. Решение 1: пределы генерации координат должны
139
- быть зафиксированы так, чтобы окно всегда накрывало какую-то часть
137
+ 2. При генерации следует учитывать, что окно фильтрации должно попадать в
138
+ область изображения. Решение 1: пределы генерации координат должны быть
139
+ зафиксированы так, чтобы окно всегда накрывало какую-то часть
140
140
изображения. Решение 2: проверять, не вышло ли окно за пределы
141
141
изображения, если вышло, то обрезать лишние части окна.
142
142
3. По окончании решения данной задачи следует обновить Rull Request.
143
143
144
- 4. Добавить третью кнопку, позволяющую сохранить текущее изображение
145
- на экране. Сохранять можно в текущую директорию с меткой времени.
144
+ 4. Добавить третью кнопку, позволяющую сохранить текущее изображение на
145
+ экране. Сохранять можно в текущую директорию с меткой времени.
146
146
147
147
1. В структуру `GUIElementsState` добавить поле `cv::Rect saveButtonPlace`.
148
148
2. В метод `drawButtons` класса `Application` добавить отрисовку третьей
@@ -185,8 +185,8 @@ __Дополнительные задачи:__
185
185
5. Добавить несколько дополнительных кнопок, позволяющих менять тип фильтра
186
186
(см. п.3 раздела [Основные задачи][tasks].
187
187
188
- 1. В класс `Processing` добавить перечисление для обозначения типа
189
- фильтра, который применяется к изображению.
188
+ 1. В класс `Processing` добавить перечисление для обозначения типа фильтра,
189
+ который применяется к изображению.
190
190
191
191
```
192
192
enum FilterType
@@ -203,7 +203,8 @@ __Дополнительные задачи:__
203
203
3. В реализации метода `processFrame` класса `Processing` вместо вызова
204
204
функции медианной фильтрации `medianBlur(roi, roi, kSize)` добавить
205
205
оператор множественного выбора по параметру `filter`. В зависимости от
206
- типа фильтра необходимо вызывать тот или набор функций библиотеки OpenCV.
206
+ типа фильтра необходимо вызывать тот или набор функций библиотеки
207
+ OpenCV.
207
208
4. Отрисовать дополнительные кнопки по аналогии с кнопкой сохранения
208
209
изображений. Положение кнопок сохранить в структуре `GUIElementsState`.
209
210
Замечание: кнопку `On` можно только переименовать в `Median`.
0 commit comments