Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Близнюк_ДВ.docx
Скачиваний:
106
Добавлен:
26.03.2016
Размер:
1.04 Mб
Скачать
  1. Разработка программного решения

    1. Выбор среды для разработки

Для распознавания объектов (лиц, глаз) в видеопотоке в реальном времени, я выбрал один из наиболее распространенных и универсальных языков - C++. C++ является объектно-ориентированным языком с огромными возможностями программирования, с использованием библиотеки OpenCV. В качестве среды разработки была выбрана Visual Studio 13.

    1. Разработка интерфейса программы

Перед разработкой интерфейса передо мной стоял вопрос с помощью чего его разрабатывать: Windows API –набор базовых функций интерфейсов для программирования приложений операционных систем семейств Microsoft Windows или Windows Forms - интерфейс программирования приложений(API), отвечающий за графический интерфейс пользователя и являющийся частью Microsoft .NET Framework. Windows Forms имеет собственную модель программирования, которая более совершеннее, чем модели, основанные на Win32 API или MFC, и они выполняются в управляемой среде .NET Common Language Runtime (CLR). Для создания простого интерфейса Windows Forms идеальный вариант, так как очень удобен и для работы с ним не нужно обладать какими-либо специальными навыками, в отличие от Windows API.

На форме 2 groupBox’а, 10 label’ов, 2 кнопки: «Старт», «Выход», ToolStripMenu - Главное меню. Большую часть интерфейса занимает pictureBox, который нам нужен для выведения статической картинки. Выбор пал на pictureBox, потому дает возможность рисовать в нем, что необходимо для рисования целеуказателя.

Первый groupBox содержит label’ов для выведения контрольной информации: ширину и высоту окна, на которое выводится изображение, информацию о количестве обнаруженных лиц и глаз и количестве кадров в секунду. Второй groupBox содержит меню управления: кнопки «Старт» и «Выход».

Кнопка «Старт» запускает саму программу, которая ищет камеру и получает к ней доступ, после чего начинает поиск искомых объектов и выделения их, а затем выводит изображение в окно, которое появляется после нажатия кнопки «Старт».

Кнопка «Выход» прекращает работу программы и выключает интерфейс.

Главное меню содержит вкладку «Файл» и «Помощь». Вкладка «Файл» содержит вкладку «Выход», которая так как и кнопка «Выход» прекращает работу программы и закрывает интерфейс.

Пример внешнего вида интерфейса показан на рисунке __.Рисунок __. Интерфейс программы

Рисунок __. Обнаружение лица в видеопотоке.

    1. Библиотека OpenCV

OpenCV – библиотека компьютерного зрения с открытым исходным кодом. Библиотека написана на C и C++, работает под Linux, Windows и Mac OS X. Происходит активная разработка интерфейсов для Python, Ruby, MATLAB и других языков.

OpenCV направлена на выполнение задач реального времени. Она написана на оптимизированном C и может работать с многоядерными процессорами. Одной из целей OpenCV является предоставление простой в использовании библиотеки машинного зрения, которая помогает создавать достаточно сложные приложения в короткие сроки. OpenCV содержит в себе более 500 функций которые охватывают много областей, включая контроль качества на производстве, системы безопасности, обработку изображений в медицине, пользовательские интерфейсы, стереоскопическое зрение и роботостроение. Поскольку компьютерное зрение и обучение машин идут “рука об руку”, OpenCV также включает в себя библиотеку общего назначения MLL (Machine Learning Library, Библиотека Обучения Машин). Эта под-библиотека решает задачи статистического распознавания образов и кластеризации. MLL очень полезна для решения сложных задач, связанных с компьютерным зрением, но является достаточно общей, для того чтобы решать большинство задач обучения машин.

Эта библиотека очень популярна за счёт своей открытости и возможности бесплатно использовать как в учебных, так и коммерческих целях.

Фактически, OpenCV – это набор типов данных, функций и классов для обработки изображений алгоритмами компьютерного зрения.

      1. Описание модулей OpenCV

Библиотека OpenCV состоит из нескольких модулей:

Модуль CXCORE – ядро, содержит:

  • базовые структуры;

  • матричную алгебру;

  • алгоритмы работы с памятью;

  • алгоритмы преобразования типов;

  • алгоритмы для обработки ошибок;

  • функции для записи/чтения XML файлов;

  • функции для работы с 2D графиками.

CV – модуль обработки изображений, работа с компьютерным зрением, содержит:

  • функции для работы с изображениями (преобразование, фильтрация и т.д.);

  • функции для анализа изображений (поиск контуров, гистограммы и т.д.);

  • алгоритмы анализа движений, слежение за объектами;

  • алгоритмы распознания объектов (лиц, предметов);

  • алгоритмы для калибровки камер.

В модуль ML входит машинное оубчение:

  • функции для классификации и анализа данных.

HighGUI – модуль для создания пользовательского интерфейса, отвечает за:

  • создание окон;

  • вывод изображений;

  • захват видео из файлов и камер;

  • чтение/запись изображений.

CVCAM – захват видео с цифровых камер.

CVAUX – устаревшие функции:

  • пространственное зрение;

  • нахождение и описание черт лица;

  • поиск стерео соответствий;

  • описание текстур.

      1. Подключение Библиотеки OpenCV

Для подключения библиотеки необходимо в главном меня открыть вкладку «Проект», в которой будет содержаться вкладка «Свойства: Project_name»

В появившемся окне выбираем вкладку «Свойства конфигурации», далее «Каталоги VC++» , затем ищем следующие вкладки: «Каталоги включения», «Каталоги библиотек», «Каталоги исходного кода»;

В «Каталоги включения» необходимо прописать: 'C:\Programs\OpenCV\build\include\';

В «Каталоги библиотек» необходимо прописать: 'C:\Programs\OpenCV\build\x86\vc10\lib\';

Дальнейшее выполнять не обязательно:

В «Каталоги исходного кода» необходимо прописать:

'C:\Program Files\OpenCV\modules\core\src',

'C:\Program Files\OpenCV\modules\highgui\src',

'C:\Program Files\OpenCV\modules\ml\src'.

Далее необходимо прописать дополнительные зависимости. Для этого заходим в «Свойства конфигурации» -> «Компоновщик» -> «Ввод»-> «Дополнительные зависимости»:

'opencv_core242.lib'

'opencv_highgui242.lib'

'opencv_ml242.lib'

'opencv_video242.lib'

'opencv_imgproc242.lib'.