Напишем стандартный и такой долгожданный 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 );
— эта функция закрывает окно и освобождает выделенную память.
День добрый. Сделал всё согласно прошлому пункту (установка), скопипастил HelloWorld! функцию, MSVS выдает ошибки типа «ссылка на неразрешенный внешний символ _cvDestroyWindow в функции _wmain» для всех OpenCV'шных функций.
Что делать?
Среда MSVS C++ 9 2008, OpenCV 2.1.0
разумеется, можно использовать интерфейс С++, но я решил рассматривать интерфейс С, а С++-й использовать по необходимости.
К тому же, большинство функций С++-го интерфейса которой просто вызывают C-ые методы.
Подскажите пожалуйста всё вроде так сделал но почему то библиотеку не видит. «Запуск программы не возможен, так как на компьютере отсутствует cxcore200.dll. Попробуйте переустановить программу»
Здравствуйте, начал осваивать Opencv и сразу столкнулся с кучей проблем, неполучилось поставить под виндовс, вроде все делаешь по мануалу, а один фиг не работает =(, в итоге кое как поставил на убунту, этот проект вроде билдидся, но при запуске вылазит ошибка
(Hello World:10523): Gtk-WARNING **: cannot open display:
остальные проекты просто не компилируются(, хотя вставляю просто без изменений, самая расрпостранная ошибка
invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive]
очень прошу помощи, в программировании я не сильно разбираюсь, новичек, заранее благодарен.
надо зайти в папку где сохранен сам проект, у меня эта папка workspace/название проекта, далее в папку debug, и запустить исполнительный файл, если проект с ошибками то он не соберется. И файла исполнительного там не будет.
Комментарии (18)
RSS свернуть / развернутьХотелось бы узнать, как можно задавать координаты появляющегося окна?
Заранее спасибо.
Altivolus
noonv
Altivolus
Что делать?
Среда MSVS C++ 9 2008, OpenCV 2.1.0
gous32
PS уже вышла OpenCV
noonv
nikitabugrov
К тому же, большинство функций С++-го интерфейса которой просто вызывают C-ые методы.
noonv
А как можно убрать кнопки «закрыть», «свернуть», «развернуть» в правом верхнем углу и название окна?
Anton
Slashik
ну а самое простое решение — забросить требуемые dll-ки в директорию к приложению
по теме:
noonv
Slashik
Что делать? Помогите пожалуйста.
mike_ur
noonv
(Hello World:10523): Gtk-WARNING **: cannot open display:
остальные проекты просто не компилируются(, хотя вставляю просто без изменений, самая расрпостранная ошибка
invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive]
очень прошу помощи, в программировании я не сильно разбираюсь, новичек, заранее благодарен.
winston23
тут поподробнее немного
winston23
«в общем разобрался, это проблема эклипса, если зайти в папку с проектом и самостоятельно запустить то все работет»
Что значит зайта в папку с проектом и самостоятельно запустить?
avgustmen
winston23
Только нужно «CvFont font;» перенести вверх функции main, иначе VS выдаёт ошибку.
mctim
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.