на OpenFrameworks
5. OpenFrameworks
и OpenCV
лекции и объявления:
www.uralvision.blogspot.com
2. Обработать
построить новое изображение data1
unsigned char* data1 = new unsigned char *[w * h * 3];
....заполняем data1, используя data
Из openFrameworks в OpenCV
Из OpenCV в openFrameworks
1. Запускаем VS2008
3. Настраиваем пути
Alt+F7 - откроется окно свойств проекта
Configuration Properties - C/C++ - General - Additional Include Directories,
там ставим значение "C:\Program Files\OpenCV2.1\include\opencv";
2. Пишем в Project1.cpp:
#include "stdafx.h"
#include "cv.h"
#include "highgui.h"
using namespace cv;
waitKey( 0 );
return 0;
}
Класс Mat
Mat - основной класс для хранения изображений OpenCV.
Класс Mat
Одно- и многоканальные изображения
Mat imageEmpty;
Image imageFloat;
imageGray.convertTo( imageFloat, CV_32FC1, 1.0 / 255.0 );
image1.copyTo( image2 );
image3 = image1.clone();
Класс Mat
Управление памятью
Итог:
1) операция присваивания Mat B = A; работает очень быстро, и не
осуществляет копирование данных, а настраивает специальным
образом указатели на них. Это позволяет передавать Mat в функции
прямо, без указателей и ссылок. При этом не возникнет
нежелательного копирования Mat в стек (как это бы сталал std::vector).
Хотя, конечно, const Mat & будет передаваться все равно быстрее.
//Взятие значения
int value = imageGray.at<uchar>(y, x);
//Установка значения
imageGray.at<uchar>(y, x) = 100;
наоборот:
cvtColor( inputGray, outputRGB, CV_GRAY2BGR );
Класс Mat
Разбиение на каналы
Функция split разбивает многоканальное изображение на каналы.
Функция merge склеивает несколько одноканальных изображений в
многоканальное.
vector<Mat> channels;
split( image, channels );
http://www.innocentenglish.com/funny-pics/best-pics/stairs-sidewalk-art.jpg
Функции обработки изображений
Пороговая обработка
http://www.svi.nl/wikiimg/SeedAndThreshold_02.png
Функции обработки изображений
Заливка областей
Применение
1. Распознавание. По контуру можно часто определить тип объекта, который мы
наблюдаем.
http://howto.nicubunu.ro/gears/gears_16.png
http://cvpr.uni-muenster.de/research/rack/index.html
Пример проекта на OpenCV:
поиск биллиардного шара
Задача
Алгоритм:
морфологические операции
dilate - дилатация (*)
erode - эрозия (*)
floodFill - описание
Внимание:
1. нужно
#include "highgui.h"
2. если выводить изображения в окно с одинаковым
именем, на экране будет видно лишь последнее
изображение.
Домашнее задание