Skip to content

Commit 487be83

Browse files
author
Kirill Kornyakov
committed
Process only a submat, quit on Esc
1 parent 8da1195 commit 487be83

File tree

4 files changed

+45
-15
lines changed

4 files changed

+45
-15
lines changed

README.md

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,29 @@ __
7878
3. Наличие набора переключателей (кнопок) для применения различных
7979
методов выделения контуров.
8080

81-
## Инструкция по выполнению работы
81+
## Общая последовательность действий
82+
83+
1. Сделать форк upstream-репозитория, клонировать origin к себе на локальную
84+
машину. Скомпилировать и запустить сэмпл на картинке.
85+
2. Создать копию директории с сэмплом, добавить ее построение в CMake,
86+
убедиться что новый сэмпл успешно строится и запускается. Прислать
87+
pull-request с еще неизмененным сэмплом.
88+
3. Сделать так, чтобы регион фильтрации менял со временем свое положение и
89+
размеры. Прислать pull request.
90+
4. Добавить вторую кнопку, позволяющую сохранить текущее изображение на
91+
экране. Сохранять можно в текущую директорию с меткой времени. Прислать
92+
pull request.
93+
4. Добавить вторую кнопку, позволяющую выбирать тип фильтра.
94+
- Вторым фильтром может быть простой перевод в grayscale.
95+
- Затем добавить режим с Canny.
96+
- Затем добавить режим пикселизации.
97+
- Прислать pull-request.
98+
5. Реализовать возможность получения кадров с камеры и видеофайлов. Добавить
99+
соответствующие аргументы командной строки. Прислать pull-request.
100+
6. Дополнительные задания
101+
- Реализовать случайное перемешивание картинки как в игре в "пятнашки".
102+
103+
## Детальная инструкция по выполнению работы
82104

83105
1. Создать аккаунт на [github.com](https://github.com), если такой
84106
отсутствует. Для определенности обозначим аккаунт `github-account`.

samples/sample_template.cpp

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,30 +9,32 @@ using namespace cv;
99

1010
int main(int argc, char **argv)
1111
{
12-
const std::string caption = "Median filter";
1312
Parameters params;
14-
if (parseArguments(argc, argv, params) != 0)
13+
if (parseArguments(argc, argv, params) != 0)
1514
{
16-
cout << "practice2 <img_name>" << endl;
17-
cout << "<img_name> - image name for filtering" << endl;
15+
cout << "practice2 <image_name>" << endl;
16+
cout << "<image_name> - image name for filtering" << endl;
1817
return 1;
1918
}
2019

21-
Mat src, dst;
22-
20+
Mat src;
2321
if (getFrame(params.imgFileName, src) != 0)
2422
{
2523
cout << "Error: \'src\' image is null or empty!" << endl;
2624
return 2;
2725
}
28-
26+
27+
Mat dst;
2928
if (processFrame(src, dst) != 0)
3029
{
3130
cout << "Error: Filtering failed!" << endl;
3231
return 3;
3332
}
34-
35-
show(caption, src, dst);
33+
34+
const std::string caption = "OpenCV Sample";
35+
char key = 0;
36+
while(key != 27) // Esc
37+
key = show(caption, src, dst);
3638

3739
return 0;
3840
}

src/img_proc.cpp

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,18 @@ int getFrame(const std::string &fileName, Mat& src)
1212

1313
int processFrame(const Mat& src, Mat& dst)
1414
{
15+
src.copyTo(dst);
16+
17+
cv::Rect region(src.rows/4, src.cols/4, src.rows/2, src.cols/2);
1518
const int kSize = 11;
16-
medianBlur(src, dst, kSize);
19+
medianBlur(dst(region), dst(region), kSize);
20+
rectangle(dst, region, Scalar(255, 0, 0));
21+
1722
if (dst.empty())
1823
{
1924
return 1;
2025
}
26+
2127
return 0;
2228
}
2329

@@ -27,7 +33,7 @@ int show(const std::string &caption, const Mat& src, const Mat& dst)
2733
{
2834
return 1;
2935
}
30-
36+
3137
Mat display(src.rows, src.cols + dst.cols, src.type());
3238
Mat srcRoi = display(Rect(0, 0, src.cols, src.rows));
3339
src.copyTo(srcRoi);
@@ -36,7 +42,7 @@ int show(const std::string &caption, const Mat& src, const Mat& dst)
3642

3743
namedWindow(caption);
3844
imshow(caption, display);
39-
waitKey();
45+
char key = waitKey(1);
4046

41-
return 0;
47+
return key;
4248
}

test/img_proc_test.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ TEST(practice2, median_filter_test)
66
std::string input = "./testdata/image.png";
77
std::string expOutput = "./testdata/image_median_11.png";
88

9-
Mat src, expDst, dst;
9+
Mat src, expDst, dst;
1010
getFrame(input, src);
1111
if (src.empty())
1212
{

0 commit comments

Comments
 (0)