CraftDuino v2.0
  • - это CraftDuino - наш вариант полностью Arduino-совместимой платы.
  • CraftDuino - настоящий конструктор, для очень быстрого прототипирования и реализации идей.
  • Любая возможность автоматизировать что-то с лёгкостью реализуется с CraftDuino!
Просто добавьте CraftDuino!

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

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