- •Аннотация
- •Реферат
- •Содержание
- •Введение
- •Анализ технического задания
- •Описание метода Viola Jones
- •1.1.2 Интегральное представление изображений
- •1.1.3 Признаки Хаара
- •1.1.5 Бустинг
- •Синтез Алгоритмов работы
- •Алгоритм основной программы:
- •Словесныйалгоритм:
- •Алгоритм работы подпрограммы detectAndDisplay:
- •Разработка программного решения
- •Разработка интерфейса программы
- •Классы и функции, используемые в работе.
- •Матрицы и типы изображений
- •Класс CvCapture
- •Технико-экономическоеобоснование работы
- •Обоснование актуальности и целесообразности разработки
- •Обоснование выбора аналога и критериев для сравнения
- •Расчет технико-экономических показателей разработки
- •Расчет единовременных квартальных затрат на этапе разработки.
- •Расчет сравнительной технико-экономической эффективности разработки.
- •Заключение
- •Безопасность человеко-машинного взаимодействия
- •Заключение
Разработка программного решения
Выбор среды для разработки
Для распознавания объектов (лиц, глаз) в видеопотоке в реальном времени, я выбрал один из наиболее распространенных и универсальных языков - C++. C++ является объектно-ориентированным языком с огромными возможностями программирования, с использованием библиотеки OpenCV. В качестве среды разработки была выбрана Visual Studio 13.
Разработка интерфейса программы
Перед разработкой интерфейса передо мной стоял вопрос с помощью чего его разрабатывать: 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 содержит меню управления: кнопки «Старт» и «Выход».
Кнопка «Старт» запускает саму программу, которая ищет камеру и получает к ней доступ, после чего начинает поиск искомых объектов и выделения их, а затем выводит изображение в окно, которое появляется после нажатия кнопки «Старт».
Кнопка «Выход» прекращает работу программы и выключает интерфейс.
Главное меню содержит вкладку «Файл» и «Помощь». Вкладка «Файл» содержит вкладку «Выход», которая так как и кнопка «Выход» прекращает работу программы и закрывает интерфейс.
Пример
внешнего вида интерфейса показан на
рисунке __.
Рисунок
__. Интерфейс программы

Рисунок __. Обнаружение лица в видеопотоке.
Библиотека OpenCV
OpenCV – библиотека компьютерного зрения с открытым исходным кодом. Библиотека написана на C и C++, работает под Linux, Windows и Mac OS X. Происходит активная разработка интерфейсов для Python, Ruby, MATLAB и других языков.
OpenCV направлена на выполнение задач реального времени. Она написана на оптимизированном C и может работать с многоядерными процессорами. Одной из целей OpenCV является предоставление простой в использовании библиотеки машинного зрения, которая помогает создавать достаточно сложные приложения в короткие сроки. OpenCV содержит в себе более 500 функций которые охватывают много областей, включая контроль качества на производстве, системы безопасности, обработку изображений в медицине, пользовательские интерфейсы, стереоскопическое зрение и роботостроение. Поскольку компьютерное зрение и обучение машин идут “рука об руку”, OpenCV также включает в себя библиотеку общего назначения MLL (Machine Learning Library, Библиотека Обучения Машин). Эта под-библиотека решает задачи статистического распознавания образов и кластеризации. MLL очень полезна для решения сложных задач, связанных с компьютерным зрением, но является достаточно общей, для того чтобы решать большинство задач обучения машин.
Эта библиотека очень популярна за счёт своей открытости и возможности бесплатно использовать как в учебных, так и коммерческих целях.
Фактически, OpenCV – это набор типов данных, функций и классов для обработки изображений алгоритмами компьютерного зрения.
Описание модулей OpenCV
Библиотека OpenCV состоит из нескольких модулей:
Модуль CXCORE – ядро, содержит:
базовые структуры;
матричную алгебру;
алгоритмы работы с памятью;
алгоритмы преобразования типов;
алгоритмы для обработки ошибок;
функции для записи/чтения XML файлов;
функции для работы с 2D графиками.
CV – модуль обработки изображений, работа с компьютерным зрением, содержит:
функции для работы с изображениями (преобразование, фильтрация и т.д.);
функции для анализа изображений (поиск контуров, гистограммы и т.д.);
алгоритмы анализа движений, слежение за объектами;
алгоритмы распознания объектов (лиц, предметов);
алгоритмы для калибровки камер.
В модуль ML входит машинное оубчение:
функции для классификации и анализа данных.
HighGUI – модуль для создания пользовательского интерфейса, отвечает за:
создание окон;
вывод изображений;
захват видео из файлов и камер;
чтение/запись изображений.
CVCAM – захват видео с цифровых камер.
CVAUX – устаревшие функции:
пространственное зрение;
нахождение и описание черт лица;
поиск стерео соответствий;
описание текстур.
Подключение Библиотеки 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'.
