Skip to content

Commit 296942d

Browse files
author
Kirill Kornyakov
committed
Merge pull request #9 from valentina-kustikova/master
Updated practice description.
2 parents 785f142 + 3d95bb5 commit 296942d

File tree

1 file changed

+22
-12
lines changed

1 file changed

+22
-12
lines changed

README.md

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,9 @@ __Дополнительные задачи:__
8181
2. Скомпилировать и запустить сэмпл на картинке (раздел
8282
[Сборка проекта с помощью CMake и MS VS][cmake-msvs]
8383
в [практической работе 1][practice1].
84+
3. Создать новую ветку для разработки собственного приложения
85+
необходимые команды описаны в разделе
86+
[Общие инструкции по работе с Git][git-intro] в [практической работе 1][practice1].
8487
4. Создать копию директории с сэмплом, добавить ее построение в корневой
8588
`CMakeLists.txt`.
8689
5. Убедиться, что новый сэмпл успешно собирается и запускается.
@@ -109,9 +112,15 @@ __Дополнительные задачи:__
109112
2. Скомпилировать и запустить сэмпл на картинке (подробная последовательность
110113
действий описана в разделе [Сборка проекта с помощью CMake и MS VS][cmake-msvs]
111114
в [практической работе 1][practice1]).
115+
3. Создать новую ветку для разработки собственного приложения
116+
необходимые команды описаны в разделе
117+
[Общие инструкции по работе с Git][git-intro] в [практической работе 1][practice1].
112118
4. Создать копию директории с сэмплом, дав ей название `sample_YOUR_NAME`, и
113119
добавить ее построение в общий `CMakeLists.txt`
114-
(`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")`
115124
5. Убедиться, что новый сэмпл с шаблонной реализацией успешно собирается
116125
и запускается (подробная последовательность действий описана в разделе
117126
[Сборка проекта с помощью CMake и MS VS][cmake-msvs]
@@ -122,7 +131,6 @@ __Дополнительные задачи:__
122131
названия.
123132
7. Сделать так, чтобы регион фильтрации менял со временем свое положение и
124133
размеры.
125-
126134
1. Для этого необходимо в методе `processFrame` класса `Processing`
127135
заменить фиксированное положение фильтра на процедурную генерацию
128136
положения левого верхнего угла `x` и `y` региона `region` при
@@ -134,17 +142,18 @@ __Дополнительные задачи:__
134142
cv::Rect region(src.rows/4, src.cols/4, src.rows/2, src.cols/2);
135143
```
136144
137-
2. При генерации следует учитывать, что окно фильтрации должно попадать в
145+
При генерации следует учитывать, что окно фильтрации должно попадать в
138146
область изображения. Решение 1: пределы генерации координат должны быть
139147
зафиксированы так, чтобы окно всегда накрывало какую-то часть
140148
изображения. Решение 2: проверять, не вышло ли окно за пределы
141149
изображения, если вышло, то обрезать лишние части окна.
150+
2. Не забывайте коммитить изменения в локальный репозиторий и выкладывать
151+
их в ветку на сервере.
142152
3. По окончании решения данной задачи следует обновить Rull Request.
143-
144-
4. Добавить третью кнопку, позволяющую сохранить текущее изображение на
153+
8. Добавить третью кнопку, позволяющую сохранить текущее изображение на
145154
экране. Сохранять можно в текущую директорию с меткой времени.
146-
147-
1. В структуру `GUIElementsState` добавить поле `cv::Rect saveButtonPlace`.
155+
1. В структуру `GUIElementsState` (файл `Application.hpp`) добавить поле
156+
`cv::Rect saveButtonPlace`.
148157
2. В метод `drawButtons` класса `Application` добавить отрисовку третьей
149158
кнопки по аналогии с кнопками включения/выключения фильтрации.
150159
Расположить кнопку необходимо на одной линии с имеющимися. Также на
@@ -177,12 +186,13 @@ __Дополнительные задачи:__
177186
// <image_name> - сгенерированное название изображения
178187
// с меткой текущего времени
179188
// вызвать функцию сохранения imwrite(<image_name>, display)
189+
// сбросить значение guiState.saveState в false
180190
}
181191
```
182192
183193
6. Обновить Pull Request.
184194
185-
5. Добавить несколько дополнительных кнопок, позволяющих менять тип фильтра
195+
9. Добавить несколько дополнительных кнопок, позволяющих менять тип фильтра
186196
(см. п.3 раздела [Основные задачи][tasks].
187197
188198
1. В класс `Processing` добавить перечисление для обозначения типа фильтра,
@@ -213,8 +223,9 @@ __Дополнительные задачи:__
213223
filter`.
214224
6. В конструкторе класса установить начальное значение `guiState.filter` в
215225
значение `Processing::MEDIAN`.
216-
7. Вызов метода `processFrame(src, dst)` заменить на
217-
`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)`).
218229
8. Изменить обработчик события нажатия по кнопкам `onButtonsOnOffClick`,
219230
добавив несколько проверок, соответствующих нажатию по определенным
220231
кнопкам. Содержимое условного оператора приведено ниже.
@@ -226,8 +237,7 @@ __Дополнительные задачи:__
226237
```
227238
228239
9. Проверить работоспособность приложения и обновить Rull Request.
229-
230-
6. Решить задачи из списка [Дополнительные задачи][tasks].
240+
10. Решить задачи из списка [Дополнительные задачи][tasks].
231241
232242
<!-- LINKS -->
233243

0 commit comments

Comments
 (0)