@@ -117,7 +117,10 @@ __Дополнительные задачи:__
117
117
[ Общие инструкции по работе с Git] [ git-intro ] в [ практической работе 1] [ practice1 ] .
118
118
4 . Создать копию директории с сэмплом, дав ей название ` sample_YOUR_NAME ` , и
119
119
добавить ее построение в общий ` CMakeLists.txt `
120
- (` add_subdirectory(sample_YOUR_NAME) ` ).
120
+ (` add_subdirectory(sample_YOUR_NAME) ` ). В файле ` CMakeLists.txt ` , отноящемся
121
+ к созданному проекту (расположен внутри директории ` sample_YOUR_NAME ` )
122
+ необходимо заменить ` set(target "sample_template") ` на
123
+ ` set(target "sample_YOUR_NAME") `
121
124
5 . Убедиться, что новый сэмпл с шаблонной реализацией успешно собирается
122
125
и запускается (подробная последовательность действий описана в разделе
123
126
[ Сборка проекта с помощью CMake и MS VS] [ cmake-msvs ]
@@ -128,7 +131,6 @@ __Дополнительные задачи:__
128
131
названия.
129
132
7 . Сделать так, чтобы регион фильтрации менял со временем свое положение и
130
133
размеры.
131
-
132
134
1 . Для этого необходимо в методе ` processFrame ` класса ` Processing `
133
135
заменить фиксированное положение фильтра на процедурную генерацию
134
136
положения левого верхнего угла ` x ` и ` y ` региона ` region ` при
@@ -140,17 +142,18 @@ __Дополнительные задачи:__
140
142
cv::Rect region(src.rows/4, src.cols/4, src.rows/2, src.cols/2);
141
143
```
142
144
143
- 2. При генерации следует учитывать, что окно фильтрации должно попадать в
145
+ При генерации следует учитывать, что окно фильтрации должно попадать в
144
146
область изображения. Решение 1: пределы генерации координат должны быть
145
147
зафиксированы так, чтобы окно всегда накрывало какую-то часть
146
148
изображения. Решение 2: проверять, не вышло ли окно за пределы
147
149
изображения, если вышло, то обрезать лишние части окна.
150
+ 2. Не забывайте коммитить изменения в локальный репозиторий и выкладывать
151
+ их в ветку на сервере.
148
152
3. По окончании решения данной задачи следует обновить Rull Request.
149
-
150
- 4. Добавить третью кнопку, позволяющую сохранить текущее изображение на
153
+ 8. Добавить третью кнопку, позволяющую сохранить текущее изображение на
151
154
экране. Сохранять можно в текущую директорию с меткой времени.
152
-
153
- 1. В структуру `GUIElementsState` добавить поле `cv::Rect saveButtonPlace`.
155
+ 1. В структуру `GUIElementsState` (файл `Application.hpp`) добавить поле
156
+ `cv::Rect saveButtonPlace`.
154
157
2. В метод `drawButtons` класса `Application` добавить отрисовку третьей
155
158
кнопки по аналогии с кнопками включения/выключения фильтрации.
156
159
Расположить кнопку необходимо на одной линии с имеющимися. Также на
@@ -183,12 +186,13 @@ __Дополнительные задачи:__
183
186
// <image_name> - сгенерированное название изображения
184
187
// с меткой текущего времени
185
188
// вызвать функцию сохранения imwrite(<image_name>, display)
189
+ // сбросить значение guiState.saveState в false
186
190
}
187
191
```
188
192
189
193
6. Обновить Pull Request.
190
194
191
- 5 . Добавить несколько дополнительных кнопок, позволяющих менять тип фильтра
195
+ 9 . Добавить несколько дополнительных кнопок, позволяющих менять тип фильтра
192
196
(см. п.3 раздела [Основные задачи][tasks].
193
197
194
198
1. В класс `Processing` добавить перечисление для обозначения типа фильтра,
@@ -219,8 +223,9 @@ __Дополнительные задачи:__
219
223
filter`.
220
224
6. В конструкторе класса установить начальное значение `guiState.filter` в
221
225
значение `Processing::MEDIAN`.
222
- 7. Вызов метода `processFrame(src, dst)` заменить на
223
- `processFrame(src, dst, guiState.filter)`.
226
+ 7. Вызов метода `processor.processFrame(src, dst)` заменить на
227
+ `processor.processFrame(src, dst, guiState.filter)` (метод класса приложения
228
+ `int Application::processFrame(const Mat& src, Mat& dst)`).
224
229
8. Изменить обработчик события нажатия по кнопкам `onButtonsOnOffClick`,
225
230
добавив несколько проверок, соответствующих нажатию по определенным
226
231
кнопкам. Содержимое условного оператора приведено ниже.
@@ -232,7 +237,6 @@ __Дополнительные задачи:__
232
237
```
233
238
234
239
9. Проверить работоспособность приложения и обновить Rull Request.
235
-
236
240
6. Решить задачи из списка [Дополнительные задачи][tasks].
237
241
238
242
<!-- LINKS -->
0 commit comments