3. OpenCV шаг за шагом. Hello World.

1. OpenCV шаг за шагом. Введение.
2. OpenCV шаг за шагом. Установка.
3. OpenCV шаг за шагом. Hello World.

Напишем стандартный и такой долгожданный 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, который указывает, что окно будет ровно тех же размеров, что и загружаемое в него изображение.

void cvShowImage( const char* name, const CvArr* image );
— эта функия собственно и отображает изображение в окне;
первый параметр — название окна для вывода картинки,
второй параметр — изображение для вывода.

int cvWaitKey( int delay=0 );
— эта функция останавливает программу и ожидает нажатия клавиши заданное число миллисекунд и продолжает программу, если ничего не нажато.
Если же, как в нашем случае, параметр функции равен нулю, тогда программа ожидает нажатия клавиши и только потом продолжает работу.

Стандарный пример использования этой функции в цикле обрабоки видеоданных с камеры:
char c = cvWaitKey(33);
if (c == 27) { // если нажали ESC - выходим из цикла
    break;
}


void cvReleaseImage( IplImage** image );
— функция освобождает память, выделенную под изображение и устанавливает указатель в NULL.

void cvDestroyWindow( const char* name );
— эта функция закрывает окно и освобождает выделенную память.

Читать далее: 4. OpenCV шаг за шагом. Загрузка картинки
  • 0
  • 4 июля 2010, 12:00
  • noonv

Комментарии (18)

RSS свернуть / развернуть
+
0
Здравствуйте!
Хотелось бы узнать, как можно задавать координаты появляющегося окна?
Заранее спасибо.
avatar

Altivolus

  • 3 мая 2012, 19:46
+
0
можно воспользоваться функцией cvMoveWindow()
avatar

noonv

  • 3 мая 2012, 19:57
+
0
Огромное спасибо
avatar

Altivolus

  • 3 мая 2012, 20:08
+
0
День добрый. Сделал всё согласно прошлому пункту (установка), скопипастил HelloWorld! функцию, MSVS выдает ошибки типа «ссылка на неразрешенный внешний символ _cvDestroyWindow в функции _wmain» для всех OpenCV'шных функций.
Что делать?
Среда MSVS C++ 9 2008, OpenCV 2.1.0
avatar

gous32

  • 23 июня 2012, 05:02
+
0
забыли добавить в Additional dependencies нужные lib-файлы.
PS уже вышла OpenCV 2.4.1 ;)
avatar

noonv

  • 24 июня 2012, 13:56
+
0
А почему не используется доступ через cv::? Одно и тоже cvPoint и cv::Point?
avatar

nikitabugrov

  • 27 августа 2012, 23:18
+
0
разумеется, можно использовать интерфейс С++, но я решил рассматривать интерфейс С, а С++-й использовать по необходимости.
К тому же, большинство функций С++-го интерфейса которой просто вызывают C-ые методы.
avatar

noonv

  • 28 августа 2012, 06:32
+
0
Добрый день!
А как можно убрать кнопки «закрыть», «свернуть», «развернуть» в правом верхнем углу и название окна?
avatar

Anton

  • 18 сентября 2012, 13:25
+
0
Подскажите пожалуйста всё вроде так сделал но почему то библиотеку не видит. «Запуск программы не возможен, так как на компьютере отсутствует cxcore200.dll. Попробуйте переустановить программу»
avatar

Slashik

  • 7 ноября 2012, 22:26
+
0
это относится к установке библиотеки. не забыли прописать путь до dll-ок в переменную окружения PATH?
ну а самое простое решение — забросить требуемые dll-ки в директорию к приложению
по теме: как заставить мою программу с OpenCV работать на другом компьютере?
avatar

noonv

  • 8 ноября 2012, 05:13
+
0
Спасибо, всё получилось
avatar

Slashik

  • 8 ноября 2012, 08:42
+
0
Запуск программы невозможен, так как на компьютере отсутствует MSVCP110D.dll Попробуйте переустановить программу
Что делать? Помогите пожалуйста.
avatar

mike_ur

  • 1 декабря 2013, 17:39
+
0
Здравствуйте, начал осваивать Opencv и сразу столкнулся с кучей проблем, неполучилось поставить под виндовс, вроде все делаешь по мануалу, а один фиг не работает =(, в итоге кое как поставил на убунту, этот проект вроде билдидся, но при запуске вылазит ошибка
(Hello World:10523): Gtk-WARNING **: cannot open display:
остальные проекты просто не компилируются(, хотя вставляю просто без изменений, самая расрпостранная ошибка
invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive]
очень прошу помощи, в программировании я не сильно разбираюсь, новичек, заранее благодарен.
avatar

winston23

  • 5 января 2014, 07:23
+
0
в общем разобрался, это проблема эклипса, если зайти в папку с проектом и самостоятельно запустить то все работет,
тут поподробнее немного
avatar

winston23

  • 5 января 2014, 10:17
+
0
Приветствую, у меня та же проблема, но я не разобрался, можно поподробнее по этой фразе:

«в общем разобрался, это проблема эклипса, если зайти в папку с проектом и самостоятельно запустить то все работет»

Что значит зайта в папку с проектом и самостоятельно запустить?
avatar

avgustmen

  • 24 февраля 2014, 17:58
+
0
надо зайти в папку где сохранен сам проект, у меня эта папка workspace/название проекта, далее в папку debug, и запустить исполнительный файл, если проект с ошибками то он не соберется. И файла исполнительного там не будет.
avatar

winston23

  • 27 февраля 2014, 07:19
+
0
Проверено Win7 x64 VS 2010 OpenCV 2.4.9.
Только нужно «CvFont font;» перенести вверх функции main, иначе VS выдаёт ошибку.
avatar

mctim

  • 6 октября 2014, 17:55

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.