Основные особенности разработанного программного обеспечения

Целью разработки данного программного обеспечения является исследование программных методов распознавания и идентификации простых объектов с помощью библиотеки компьютерного зрения OpenCV.

С точки зрения MFC проект будет состоять из двух классов: CApp (класс приложения) и CMainWin (главное окно) с соответствующей первому функцией InitInstance(); конструктором и картой сообщений для класса окна.

В программе указывается глобальное объявление функции обработки кадра - void mycallback (IplImage *img).

Указателями на изображение будут являться: IplImage *image1,*src2,*dst,*dst2,*dst3,*dst4,*gray,*dst5,*dst6,*dst7,*dst8.

Далее выделяются переменные для сохранения памяти. В данном случае это CvMemStorage *storage,*storage2;

Конструктор главного окна программы необходимо описать следующим образом:

CMainWin::CMainWin()

{ Create (NULL, "OpenCV");

Далее в конструкторе указывается дескриптор главного окна программы:

w= this->GetSafeHwnd();

Также в конструкторе определяется количество камер с помощью команды

ncams=cvcamGetCamerasCount();

Далее идет проверка наличия камер, если их количество ненулевое, выполняется ряд функций, связанных с инициализацией камеры, основных окон программы и свойств изображений:

if (ncams) {bCreate=true;vidFmt={800,600,20.0};(0,CVCAM_PROP_ENABLE,CVCAMTRUE);(0,CVCAM_PROP_CALLBACK,mycallback);(0,CVCAM_PROP_WINDOW,&w);(0,CVCAM_PROP_SETFORMAT,&vidFmt);(cvGetWindowName(w),CV_WINDOW_AUTOSIZE);

}

На рис 4.1 указано главное окно программы, которое содержит пример исходного изображения, полученного камерой СТЗ робота.

Рисунок 4.1 - Пример изображения в главном окне программы

Для организации вывода результатов обработки визуальной информации используется функция cvNamedWindow( "Canny", 1 ), где 1 - идентификатор окна. Результат каждого преобразования исходного изображения выводится при помощи команды cvShowImage().

На рис. 4.2 приведен пример применения функции Canny, обеспечивающей выделение границ изображений.

Рисунок 4.2 - Окно программы с функцией Canny

С помощью функции cvCreateTrackbar создается полоса прокрутки cvCreateTrackbar("CannyTrack","Canny",&cannyt,200,NULL) и задается размер окна для функции cvResizeWindow("Canny",320,200).

Аналогичным образом создается окно для вывода функции определения контуров. На рисунке 4.3 приведено выполнение функции.

Рисунок 4.3 - Определение контуров изображений

Затем производится инициализация камеры, либо выводится сообщение об ошибке:

(!cvcamInit()) MessageBox("Error");

в противном случае производится запуск камеры:

();}

либо выдается сообщение о том, что она не найдена.

Закрытие главного окна программы должно обеспечивать закрытие всех программных окон (в противном случае они могут остаться в памяти). Для этого необходимо использовать функцию void CMainWin::OnClose(), в которой производится остановка камеры (cvcamStop()),закрытие всех окон (cvDestroyAllWindows()), выход из режима камеры (cvcamExit()) и закрытие главного окна:

if(!bCreate) cvReleaseImage(&dst);(); }.

Другое по теме:

Проектирование волоконно-оптической линии связи Томск-Северск
В настоящее время требования к передаче данных значительно выросли и постоянно растут. Отличным решением проблемы служит волоконно-оптический кабель (ВОК). Технологии высокоскоростной передачи данных, такие как Gigabit Ethern ...

Технологический процесс ремонта и регулировки модуля кадровой развертки МК-41
К современной бытовой аппаратуре предъявляются следующие требования - получение высоких качественных показателей; - элементная база должна быть современной, - высокая надежность, - простот ...

©  www.techvarious.ru - 2019