Главная / Программирование /
Разработка мультимедийных приложений с использованием библиотек OpenCV и IPP / Тест 6
Разработка мультимедийных приложений с использованием библиотек OpenCV и IPP - тест 6
Упражнение 1:
Номер 1
Можно ли использовать OpenCV в коммерческих приложениях?:
Ответ:
 (1) нет 
 (2) да, если в документации или сопроводительных материалах содержится копия лицензии OpenCV 
 (3) да, если об этом никто не узнает 
Номер 2
Какие языки программирования официально поддерживаются в OpenCV?:
Ответ:
 (1) C/C++, Python, Matlab 
 (2) C/C++, Matlab, Java 
 (3) C/C++, Python, Java 
Номер 3
Для чего в OpenCV используется CMake:
Ответ:
 (1) для сборки самой библиотеки на разных платформах  
 (2) для сборки самой библиотеки на разных платформах и для упрощения использования библиотеки на разных платформах, за исключением Windows 
 (3) для сборки самой библиотеки на разных платформах и для упрощения использования библиотеки на разных платформах, включая Windows 
Упражнение 2:
Номер 1
Какой из циклов реализует подсчет производной по оси X с помощью оператора Собеля:
Ответ:
 (1)
Mat deriv(img.rows, img.cols, CV_16S);
for( int i = 1; i < img.rows-1; i++) for( int j=0; j < img.cols-1; j++)
deriv.at<short>(i,j)=
img.at<uchar>(i+1,j-1)+img.at<uchar>(i+1,j)*2+img.at<uchar>(i+1,j+1) –
img.at<uchar>(i-1,j-1)-img.at<uchar>(i-1,j)*2+img.at<uchar>(i-1,j+1);
 
 (2)
Mat deriv(img.rows, img.cols, CV_16S);
for( int i = 1; i < img.rows-1; i++) for( int j=0; j < img.cols-1; j++)
deriv.at<short>(i,j)=
img.at<uchar>(i-1,j+1)+img.at<uchar>(i,j+1)*2+img.at<uchar>(i+1,j+1) –
img.at<uchar>(i-1,j-1)-img.at<uchar>(i,j-1)*2+img.at<uchar>(i+1,j-1);
 
 (3)
Mat deriv(img.rows, img.cols, CV_16S);
for( int i = 1; i < img.rows-1; i++) for( int j=0; j < img.cols-1; j++)
deriv.at<short>(i,j)=
img.at<uchar>(i-1,j)+img.at<uchar>(i,j-1)-img.at<uchar>(i,j)*4 +
img.at<uchar>(i,j+1)+img.at<uchar>(i+1,j);
 
Номер 2
Чему будет равен счетчик ссылок матрицы A после вызова make_aligned_rgb_image
Mat make_aligned_rgb_image(int width, int height)
{
Mat img(height, ((width+15)/16)*16, CV_8UC3);
return img(Rect(0, 0, width, height));
}
…
Mat A = make_aligned_rgb_image(13, 13);
Ответ:
 (1) ничему, программа упадет 
 (2) 1 
 (3) 2 
Номер 3
Как в Питоне создать эффект "расфокусированного" изображения:
Ответ:
 (1) быстрого вычисления средней яркостей пикселей в прямоугольной области 
 (2) быстрого нахождения минимального значения яркости в прямоугольной области 
 (3) и то, и другое 
Упражнение 3:
Номер 1
Окрестность угловая точка на изображении:
Ответ:
 (1)
image = cv2.resize(image, (image.shape[1]/4, image.shape[0]/4))
image = cv2.resize(image, (image.shape[1]*4, image.shape[0]*4))
 
 (2)
image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
image = cv2.cvtColor(image, cv2.COLOR_GRAY2BGR)
 
 (3)
image = cv2.GaussianBlur(image, (7, 7), 1.5) 
Номер 2
Для чего вызывается мы вызываем waitKey()
в цикле обработки видео и указываем там задержку 30мс?:
Ответ:
 (1) чтобы пользователь успел увидеть результаты обработки 
 (2) чтобы пользователь успел увидеть результаты обработки и чтобы выйти из цикла по нажатию клавиши 
 (3) чтобы выйти из цикла по нажатию клавиши и чтобы обработать события от оконной системы (в частности, запросы на перерисовку) 
Номер 3
Вы работаете в Ми-6. Ваш друг, Джейс Бонд, вручил вам фотографию какого-то здания, и попросил найти по базе, что это за здание. Вы отсканировали фотографию. Ваши дальнейшие действия:
Ответ:
 (1) попросить помощи на answers.opencv.org, приложить фото, объяснить ситуацию 
 (2) использовать алгоритм поиска плоского изображения, отобрать результаты с большим количеством согласованных совпадений после вычисления матрицы гомографии 
 (3) то же что и b, но использовать фундаментальную матрицу вместо матрицы гомографии 
Упражнение 4:
Номер 1
На каких операционных системах работает OpenCV?:
Ответ:
 (1) Windows 
 (2) Windows, Linux 
 (3) Windows, Linux, iOS, Android 
Номер 2
Какую функциональность содержит модуль features2d?:
Ответ:
 (1) обработка изображений 
 (2) нахождение особых точек и вычисление их описателей  
 (3) захват видео с камеры 
Номер 3
В каких случаях Питон предпочтительней C++ при работе с OpenCV:
Ответ:
 (1) для прототипирования 
 (2) для написания кросс-платформенных программ 
 (3) для написания законченных коммерческих программ 
Упражнение 5:
Номер 1
Как получить справку по функции OpenCV при использовании Питон?:
Ответ:
 (1) "import cv2; print cv2.<имя функции>.__doc__ 
 (2) зайти на сайт docs.opencv.org и набрать имя функции 
 (3) оба способа подходят 
Номер 2
Какая из приведенных программ на C++ корректно подсчитывает кол-во пикселей полутонового изображения img, яркость которых больше чем определенный порог t:
Ответ:
 (1) int count = countNonZero(img > t);
 
 (2) int count = 0; for(int i = 0; i < (int)img.total(); i++) count += img.data[i] > t;
 
 (3) Mat mask; inRange(img, t, t+255, mask); int count = countNonZero(mask);
 
Номер 3
Какой результат произведет следующий код:
Mat* img = new Mat(10, 10, CV_8U);
printf("sum=%g\n", sum(*img)[0]);
img->release();
delete img;
Ответ:
 (1) напечатает 0 и завершится ошибкой из-за двойного освобождения памяти 
 (2) завершится ошибкой при попытке посчитать сумму элементов, поскольку созданная матрица не инициализирована 
 (3) напечатает некоторое число  
Упражнение 6:
Номер 1
Вам нужно определить на изображении участок NxN пикселей, в котором контраст максимален (область фокусировки). Какой из приведенных фрагментов решает эту задачу наиболее оптимально и корректно?
Ответ:
 (1)
Mat dx, dy, mag; Sobel(img, dx, CV_32F, 1, 0, 3); Sobel(img, dy, CV_32F, 0, 1, 3); magnitude(dx, dy, mag); blur(mag, mag, Size(N, N)); Point maxLoc; minMaxLoc(mag, 0, 0, 0, &maxLoc);  
 (2)
Point maxLoc; double maxContrast=0; for( int i = 0; i+N <= img.rows; i++ ) for( int j = 0; j+N <= img.cols; j++ ) { Mat window = img(Rect(j, i, N, N)); /* здесь идет код из лекции, который считает контраст внутри окна, сравнивает его с текущим maxContrast и обновляет максимум и его позицию, если нужно */ }  
 (3)
Mat edges; Canny(img, edges, 5, 50); blur(edges, edges, Size(N, N)); Point maxLoc; minMaxLoc(edges, 0, 0, 0, &maxLoc); 
Номер 2
Вы пишете коммерческую программу для фотосьемки для мобильного телефона, которая должна фокусироваться на лицах. Вы обнаружили, что скорость работы детектора из OpenCV недостаточна. Какие из нижепредложенных методов могут помочь и наиболее действенны?
Ответ:
 (1) увеличить размер minSize – параметр, подаваемый в метод detectMultiScale() 
 (2) уменьшить изображение перед детектированием. Использовать аппаратное ускорение для уменьшения изображения.  
 (3) запускать детектор в параллельном потоке на некоторых "ключевых" кадрах, следить за обнаруженными лицами для вычисления их положений на промежуточных кадрах 
Номер 3
Что такое особые точки на изображении?:
Ответ:
 (1) точки с наибольшим локальным контрастом 
 (2) точки, которые при изменении ракурса и условий освещения по-прежнему позволяют корректно оценить положение объектов, на которых они находятся.  
 (3) точки, для которых проще всего вычислять дескрипторы 
Номер 4
Что такое дескрипторы?:
Ответ:
 (1) описатели особых точек, инвариантные к небольшим изменениям ракурса, условий освещения и т.д. Представляют собой вектора в многомерном пространстве  
 (2) дескрипторы – это описатели файлов в операционной системе. При чем здесь компьютерное зрение? 
 (3) дескриторы описывают положение, размер, зашумленность, уровень освещения и другие подобные характеристики особых точек