Напишем стандартный и такой долгожданный Hello World, используя библиотеку OpenCV:
Перейдём сразу к делу, т.е. к коду:
Единственное -не стоит пугаться непонятных функций, постепенно мы их все рассмотрим ;)
#include <cv.h>
#include <highgui.h>
int main( int argc, char** argv )
{
// задаём высоту и ширину картинки
int height = 620;
int width = 440;
// задаём точку для вывода текста
CvPoint pt = cvPoint( height/4, width/2 );
// Создаёи 8-битную, 3-канальную картинку
IplImage* hw = cvCreateImage(cvSize(height, width), 8, 3);
// заливаем картинку чёрным цветом
cvSet(hw,cvScalar(0,0,0));
// инициализация шрифта
CvFont font;
cvInitFont( &font, CV_FONT_HERSHEY_COMPLEX,1.0, 1.0, 0, 1, CV_AA);
// используя шрифт выводим на картинку текст
cvPutText(hw, "OpenCV Step By Step", pt, &font, CV_RGB(150, 0, 150) );
// создаём окошко
cvNamedWindow("Hello World", 0);
// показываем картинку в созданном окне
cvShowImage("Hello World", hw);
// ждём нажатия клавиши
cvWaitKey(0);
// освобождаем ресурсы
cvReleaseImage(&hw);
cvDestroyWindow("Hello World");
return 0;
}
Приведенный пример просто выводит окошко с надписью «OpenCV Step By Step» и после нажатия любой клавиши завершает работу.
Данный пример — это немного модифицированный Hello World из оригинального руководства от Intel-а :)
Разберём некоторые функции.
int cvNamedWindow( const char* name, int flags );
— создаёт окно, в которое мы будем выводить наше изображение.
Первый параметр — название окна
Второй — его размер, 0 — даёт возможность изменять размер окна во время выполнения программы, но обычно указывается флаг CV_WINDOW_AUTOSIZE, который указывает, что окно будет ровно тех же размеров, что и загружаемое в него изображение.
— эта функия собственно и отображает изображение в окне;
первый параметр — название окна для вывода картинки,
второй параметр — изображение для вывода.
int cvWaitKey( int delay=0 );
— эта функция останавливает программу и ожидает нажатия клавиши заданное число миллисекунд и продолжает программу, если ничего не нажато.
Если же, как в нашем случае, параметр функции равен нулю, тогда программа ожидает нажатия клавиши и только потом продолжает работу.
Стандарный пример использования этой функции в цикле обрабоки видеоданных с камеры:
char c = cvWaitKey(33);
if (c == 27) { // если нажали ESC - выходим из цикла
break;
}
void cvReleaseImage( IplImage** image );
— функция освобождает память, выделенную под изображение и устанавливает указатель в NULL.
void cvDestroyWindow( const char* name );
— эта функция закрывает окно и освобождает выделенную память.
Комментарии (3)
RSS свернуть / развернутьХотелось бы узнать, как можно задавать координаты появляющегося окна?
Заранее спасибо.
Altivolus
noonv
Altivolus
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.