Лабораторная работа №1. Знакомство с OpenCV
.docxЗнакомство с OpenCV. UI, основные элементы в работы с матрицами, загрузка и сохранение форматы изображений, конвертирование, масштабирование.
Настройка Visual Studio для работы с OpenCV 3.0
Настройка Visual Studio.
-
Распаковать OpenCV 3.0. Далее будем считать, что OpenCV установлен в папке c:\opencv\
-
Необходимо создать проект типа «Приложение Win32» (Win32 Console Application). При создании проекта рекомендуется выбрать вариант «пустой проект» (Empty project). (Если этого не делать, в программе необходимо будет использовать _tmain вместо main(), а так же подключать файл stdafx.h во все файлы исходного кода).
-
В свойствах проекта в разделе “Каталоги VC++” (“VC++ Directories”) настроить пути для папок с заголовочными файлами и файлами библиотек OpenCV: в “Пути включений” (“Include Directory”) добавить c:\opencv\build\include\
в “Пути библиотек” (“Library Directory”) добавить c:\opencv\build\x86\vc10\lib\
-
В свойствах проекта, в ветке компоновщика (Linker) в разделе input добавить библиотеку opencv_world300d.lib
-
В свойствах проекта в разделе “Отладка” (“Debugging”) добавить в свойство «среда» («environment»):
PATH=%PATH%;c:\opencv\build\x86\vc10\bin
Эта настройка не является обязательной, если путь прописан в свойствах пользователя операционной системы либо если файлы динамических библиотек OpenCV скопированы в рабочий каталог программы.
-
Все настройки должны быть выполнены для конфигураций Debug / Release, кроме имени подключаемой библиотеки:
Для Debug конфигурации используется opencv_world300d.lib
Для Release используется opencv_world300.lib
Простая программа для проверки настроек
Если все настроено верно, следующая программа должна запуститься (не забываем исправить путь к картинке). Данная программа открывает изображение, уменьшает его в 2 раза, сохраняет в новый файл и отображает на экране оба изображения.
-
#include <opencv2\opencv.hpp>
-
using namespace cv;
-
-
void main()
-
{
-
Mat image = imread("C:\\OpenCV\\Lab\\Images\\Flower.jpg");
-
-
Mat resizedImage;
-
resize(image,resizedImage,Size(300,200));
-
imwrite("C:\\OpenCV\\Lab\\Images\\Flower_Resized.jpg",resizedImage);
-
imshow( "Original Image", image );
-
imshow( "Resized Image", resizedImage );
-
waitKey(0);
-
}
Общие замечания по выполнению лабораторных с использованием OpenCV.
-
Компоненты библиотеки OpenCV могут быть подключены независимо с помощью отдельных директив include:
-
#include "opencv2/core.hpp"
-
#include "opencv2/imgproc.hpp"
-
#include "opencv2/photo.hpp"
-
#include "opencv2/video.hpp"
-
#include "opencv2/features2d.hpp"
-
#include "opencv2/objdetect.hpp"
-
#include "opencv2/calib3d.hpp"
-
#include "opencv2/imgcodecs.hpp"
-
#include "opencv2/videoio.hpp"
-
#include "opencv2/highgui.hpp"
-
#include "opencv2/ml.hpp"
Это позволит не подключать ненужные компоненты. Для простоты кода используется подключение файла opencv.hpp, который содержит ссылки на все перечисленные выше файлы.
-
Все функции и типы данных OpenCV находятся в пространстве имен “cv”. Во всех примерах кода пространство имен подключено с использованием директивы using.
Основные типы данных и операции с ними
Работа с регионами интереса
Элементы пользовательского интерфейса
Индивидуальные задания
-
Преобразовать изображение к монохромному виду (самостоятельно найти формулу вычисления яркостной составляющей по цветовым компонентам);
-
Выполнить цветокоррекцию изображения (корректировку уровней красного, синего и зеленого компонентов цвета);
-
Выполнить корректировку яркости и контрастности изображения;
-
Открыть группу изображений (прочитать список из файла) и составить из них атлас (используя регионы интереса);
-
Открыть изображение и перемешать полосы (строки или столбцы) пикселей (ширина полосы должна задаваться).
-
Написать алгоритм рисования прямой линии (окружности, эллипса, график функции).
-
Реализовать пазл: Открытое изображение разбивается на фрагменты равного размера и случайным образом перемешиваются. Фрагменты могут перемещаться по полю с помощью мыши аналогично «пятнашкам». Расположенные не на своем месте фрагменты должны отображаться монохромными.