Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Прикладное программирование на CC++ с нуля до мультимедийных и сетевых приложений
.pdf
Ввод и вывод изображения 171
В этом случае снятие кадра производится с помощью кнопки, расположенной
на верхнем торце камеры. Момент фотографирования как раз представлен на
рисунке.
Для работы камеры совместно с компьютером необходимо установить соответствующее программное обеспечение. На компакт-диске, поставляемом с
устройством, содержатся самые разнообразные программы. В частности, там
имеются средства обеспечения охранных функций, возлагаемых на камеру.
Например, камера может реагировать на любое движение, произошедшее в
поле ее зрения, и выполнить некоторое действие — сгенерировать сигнал тревоги, сфотографировать движущийся объект и так далее. Оставим эти интересные возможности для самостоятельного изучения читателем. Нам из всего
арсенала программного обеспечения понадобятся только две вещи: драйвер
устройства и программа Video Blaster WebCam Go Control. Именно эти два
пункта следует выбрать после запуска инсталляции с компакт-диска. После
завершения установки остается только подключить камеру к разъему USB и
можно начинать работать.
В программной группе Creative в главном меню программ необходимо перейти на Video Blaster WebCam, а затем на WebCam Go Control. В этот момент
должно открыться окно программы, которое будет выглядеть примерно так,
как это видно на рис. 5.2.
Ðèñ. 5.2
Можно видеть, что сразу после запуска программа начинает передавать на
экран движущиеся изображения, любой кадр которого можно записать в

172 Глава 5. Программирование работы с видео
файл, нажав кнопку с изображением фотоаппарата (Snap an image). По умолчанию файл изображения будет сохранен в папку C:\Media\Photo\WebCam Go
Album. Файлу будет дано некоторое условное имя, а расширением по умолчанию будет .jpg. Таким образом, картинка сохраняется в сжатом формате. Для
того, чтобы сразу просмотреть файл, не выходя из программы, можно открыть
так называемый альбом, нажав одноименную кнопку в правой нижней части
окна. Откроется окно альбома, где в миниатюрном виде отображены все файлы, содержащиеся в альбоме (рис. 5.3).
Ðèñ. 5.3
Сделав двойной щелчок по изображению нужного файла, вы поместите
его в окно подпрограммы просмотра. Теперь экран вашего компьютера будет
выглядеть примерно так, как это иллюстрирует приведенный выше рисунок.
Подпрограмма просмотра является, по сути, плеером, воспроизводящим статические изображения или видеоклипы. Для создания клипа необходимо нажать кнопку с изображением кинокамеры (Record a video). Начнется запись
фрагмента, которую можно в любой момент остановить той же кнопкой.
Клип сохраняется по умолчанию в формате .avi в той же папке Album. Для
файлов подвижного изображения подпрограмма просмотра предусматривает
основные функции видеоплеера — перемотка, возврат в начало и так далее.

Ввод и вывод изображения 173
Соответствующие инструменты можно видеть в нижней части окна просмотра, показанного на приведенном рисунке.
При запуске программы WebCam Go Control она автоматически устанавливается в состояние Live Cam (или может быть переведена в это состояние
соответствующей кнопкой). Если же вы сделали несколько снимков камерой
в автономном режиме, то их можно увидеть и сохранить, нажав кнопку Cam
Memory. Маленькая кнопка с изображением циферблата (Capture start timer)
запускает таймер, показывающий в окне изображения время с начала записи.
Последняя кнопка в главном окне программы Settings переводит программу в режим установки опций. Рисунок иллюстрирует главное окно настроек.
Здесь можно выбрать видеоустройство, если к компьютеру подключено более
одной камеры. Кстати, строка выбора указывает, что программа совместима
только с устройствами, поддерживающимися системой VFW (Video for
Windows). В главном окне настроек можно задать частоту кадров (Frame rate)
для подвижного изображения и определить характер действий с файлами в
альбоме, которые оказались испорченными (рис. 5.4).
Ðèñ. 5.4
Кнопка Source... переводит нас в настройки источника изображения.
Здесь имеются две вкладки. Первая (Standard) позволяет отрегулировать яркость, контрастность и цветовую насыщенность изображения. Вторая
(Advanced)
сделать
дает возможность перейти в режим монохромного изображения и
некоторые другие настройки. Кнопка Format... открывает окно, показанное на следующем рисунке. Это — окно управлением видеоформатом.
Во-первых, здесь показано, что в нашем распоряжении имеется одна камера.
Далее можно установить размер изображения. Для некоторых размеров можно
поставить флажок Scaled Full Field of View. При этом изображение автоматически будет отмасштабировано на размер всего окна просмотра. Поле выбора
Image Format определяет цветовую схему, поддерживаемую компьютером.
Скорее всего, здесь будет возможен единственный вариант RGB — 24. Нас и
это вполне устроит (рис. 5.5).
Теперь вернемся в главное окно настроек и перейдем на вкладку Video
Capture. Иллюстрировать это окно не будем. Укажем только, что здесь можно

174 Глава 5. Программирование работы с видео
Ðèñ. 5.5
с использованием таймера ограничить время записи. Кроме того, на этой
вкладке можно установить важную опцию — режим компрессии записи.
Можно вообще отказаться от сжатия, что установлено по умолчанию, или выбрать один из кодеков, установленных на компьютере. Следующая вкладка
Image Capture также устанавливает свойства захвата изображения, но не динамического, как предыдущая, а статического. И, наконец, последняя вкладка,
показанная на следующем рисунке, устанавливает опции работы со звуком.
Можно включить или выключить режим параллельной записи звука и изображения — флажок Enable audio capture. Поле выбора Audio device задает устройство записи звука. Поля Audio format è Audio compressor определяют уже хорошо знакомые нам параметры и формат качества записи звука и режимы сжатия звука (рис. 5.6).
Ðèñ. 5.6

Ввод и вывод изображения 175
Мы достаточно подробно рассмотрели работу с камерой Creative. На рынке в настоящее время имеется немало других моделей устройств. Представим
кратко еще одну камеру от компании Logitech, которая называется QuickCam.
Внешний вид устройства показан далее. В отличие от описанной выше модели Logitech QuickCam не предназначена для автономной работы в качестве
цифровой камеры — не имеет внутренней памяти для временного хранения
отснятых кадров. Другим отличием является то, что камера снабжена встроенным микрофоном, что позволяет записывать видеоклипы со звуковым сопровождением без дополнительного микрофона (рис. 5.7).
Ðèñ. 5.7
Программное обеспечение, поставляемое с устройством, пожалуй, более
разнообразно. На следующем рисунке показано главное рабочее окно программы обслуживания камеры. Базовым режимом работы является запись
изображения и видеоклипа. В левой части окна отображается картинка, снимаемая камерой в данный момент времени, а в правой части — альбом с отснятым материалом.
Как можно видеть из рисунка, в верхней части окна располагается ряд инструментальных кнопок, включающих те или иные режимы. В частности, можно выполнить передачу видео по электронной почте, организовать показ изображения с вашей камеры в Интернете, включить детектор движения. В общем
же, основные функции для всех моделей Web-камер идентичны (рис. 5.8).
В заключение продемонстрируем одно из интересных применений
Web-камер. Само название устройства говорит о том, что оно имеет отношение к всемирной паутине Интернет. Действительно, так оно и есть. По всему
миру разбросано большое количество камер, которые постоянно подключены
к глобальной сети и непрерывно передают изображение в реальном времени.
Существуют специальные программы, которые, будучи подключенными к
Интернету, постоянно передают на ваш компьютер это изображение. На самом деле вы видите не непрерывно меняющуюся картинку, а последовательность отдельных кадров, которые меняются, обычно, раз в несколько секунд.
Но и это тоже интересно. Вы получаете возможность заглянуть в различные
уголки планеты.

176 Глава 5. Программирование работы с видео
Ðèñ. 5.8
Ðèñ. 5.9

VCL для записи и воспроизведения видео 177
Одной из программ приема изображений с мировых Web-камер является
приложение LiveView. После запуска программы вы попадаете в окно приложения, где справа имеется столбец кнопок выбора категорий просматриваемых камер: фауна, города, события и прочее. Нажав на одну из этих кнопок,
вы переходите в список конкретных камер. Выберите одну из них двойным
щелчком кнопки мыши и ждите появления изображения. На рисунке представлен пример работы программы с камерой, установленной в городе Базеле
(рис. 5.9).
VCL для записи и воспроизведения видео
В настоящее время существует несколько инструментариев для программирования работы с видео, различающихся, прежде всего, уровнем самого
программирования. Наиболее высокоуровневым инструментарием следует,
пожалуй, считать использование дополнительных визуальных компонентов.
Здесь «глубинные» детали работы с видео скрыты от разработчика — в большой степени автоматизированы. С одной стороны, это, конечно, удобно, поскольку существенно уменьшает объем программистской работы. С другой
стороны, сверхвысокий уровень VCL не позволяет добраться до определенных
низкоуровневых параметров и функций, а такая потребность возникает довольно часто. Эти моменты мы продемонстрируем непосредственно в данном
разделе.
В состав стандартной поставки Builder'а входит большое число различных
VC самого разнообразного назначения. Использование визуальных компонентов оказалось настолько удобным, что разработчики программного обеспечения стали производить дополнительные к стандартному набору компоненты, которые можно инсталлировать в систему и использовать в своих
приложениях. Дополнительные VC поставляются в разных формах, как и
обычное программное обеспечение: бесплатные, условно-бесплатные и коммерческие версии. Интегрирование дополнительных компонентов со стандартной библиотекой VCL, хотя и не является слишком сложной операцией,
требует определенных навыков. В этой связи мы продемонстрируем процедуру установки новых VC на примере поставки TVideoGrabber VCL component
for Delphi and C++Builder. Этот пакет представляет для нас первостепенный
интерес, поскольку предоставляет возможность программирования захвата
изображения с Web-камеры.
Пакет распространяется в Интернете на условиях условно-бесплатного
использования. Ограничения shareware-версии проявляются в том, что на захваченном изображении появляются предупреждающие надписи, избавиться
от которых можно, приобретя коммерческий продукт. Пакет находится в архиве vidgrab.zip, который необходимо, прежде всего, разархивировать в специально подготовленную папку. Далее нужно очень внимательно следовать пошаговой инструкции, представленной ниже. (Представлен вариант установки
пакета в C++ Builder 5.)

178 Глава 5. Программирование работы с видео
1. Скопировать все файлы из каталога Cbuilder5 и папки с разархивиро-
ванным пакетом в папку C:\....\Borland\Cbuilder5\Imports.
2. Запустить Buildr.
3. В главном меню программы выбрать пункт Component, подпункт Install
packages.
4. В открывшемся окне Project Options нажать кнопку Add... .
5. В появившемся окне поиска файлов перейти в папку ...\Imports è îò-
крыть там файл TVidGrab.bpl.
6. Â îêíå Project Options нажать кнопку ÎÊ.
Компонент установлен. Необходимо в этом убедиться. В палитре VCL
надо по стрелке переместиться в самую крайнюю справа вкладку Datastead и
открыть ее. Здесь присутствует один компонент с именем VideoGrabber — изображение видеокамеры. Это как раз то, что мы только что установили.
«Для полного счастья» хотелось бы интегрировать справочную информацию об установленном компоненте в систему помощи Builder'а так, чтобы ею
можно было бы пользоваться наравне со справкой по стандартным компонентам. Для этого следуйте новой инструкции.
1. Из каталога Help папки с разархивированным пакетом скопируйте все
файлы все в ту же папку ...\Imports.
2. В главном меню Builder'а откройте пункт Help, подпункт Customize.
3. В открывшемся окне OpenHelp войдите на вкладку Index.
4. Откройте пункт Edit, подпункт Add file.
5. В окне поиска, в папке ...\Imports откройте файл VidGrab.hlp.
6. Â îêíå OpenHelp перейдите на вкладку Link.
7. Откройте пункт меню File и активируйте подпункт Save Project.
8. Закройте окно OpenHelp.
Если поверить сопроводительной документации к пакету, то на этом установка компонента заканчивается, но... При следующем запуске Builder'а и выполнении в нем каких-либо операций перед вами, скорее всего, предстанет
окно, показанное на рисунке. Похоже, система хочет иметь под рукой некий
файл TvidGrab.bpi. Оказывается, такой файл в исходной папке есть, но не в
каталоге Cbuilder5,
а в каталоге для более ранней версии Cbuilder4. Можно
прописать путь к файлу прямо в этом предупреждающем окне, но лучше скопировать его в известное Builder'у место — ту самую папку ...\Import
(ðèñ. 5.10).
Теперь окно больше появляться не будет, но... Опять но! Давайте попробуем сделать небольшую программу с использованием нового компонента.
Создадим новый проект с формой. Поместим на форму со вкладки Datastead
компонент Videograbber и попробуем оттранслировать программу. На этапе
линковки будет выдана информация об ошибке, заключающейся в том, что
система не может найти файл vcl40.bpi. Попытки найти этот файл на компьютере «вручную» к успеху тоже не приведут. Вспомним, что файл TvidGrab.bpi
мы взяли из каталога для четвертой версии Builder'а. Потому-то система и
просит файл .bpi, в имени которого фигурирует цифра 4. А такого файла дей
ствительно нет. Зато есть файл vcl50.bpi — и даже в двух местах. Оказывается,
-

VCL для записи и воспроизведения видео 179
Ðèñ. 5.10
систему можно обмануть! Давайте скопируем файл vcl50.bpi в новое имя
vcl40.bpi туда же, где находится источник (опять же в двух местах). Builder íå
заметит подмену, но снова закапризничает уже по поводу другого файла —
vcljpg40.bpi. С ним надо проделать ту же операцию, и теперь трансляция пройдет нормально.
Нужно подчеркнуть, что эта нестандартная ситуация произошла потому,
что в архив кто-то забыл вложить TvidGrab.bpi для пятой версии. А какой
спрос с бесплатного продукта? Вот и приходится «выкручиваться», как умеем.
Но никаких прав защиты интеллектуальной собственности мы не нарушаем!
Хотя трансляция прошла успешно, и был создан исполняемый файл, его
запуск привел к новой ошибке, диагностика которой представлена ниже
(рис. 5.11).
Ðèñ. 5.11
Здесь все уже совсем просто. Специфика пакета заключается в том, файл
TvidGrab.bpl должен находиться в одном каталоге с исполняемым файлом, и
только в этом случае последний будет работать. Что ж, совместите это два
файла и, наконец-то, получите результат. Работа приложения показана на
следующем рисунке. Оказывается, с помощью дополнительного компонента
программа, в которой вообще практически ничего не написано, уже делает
великое дело — показывает нам живое изображение с камеры. Но об этом
речь впереди (рис. 5.12).
Итак, будем считать, что все достаточно серьезные проблемы, связанные
с инсталляцией библиотеки, рассмотренные ранее, вами преодолены, и мы
можем приступать. Прежде всего, заметим, что для разработки приложения

180 Глава 5. Программирование работы с видео
Ðèñ. 5.12
необходимо иметь «под рукой» стандартный заголовочный файл пакета
VIDGRAB.hpp, который вы найдете в архиве библиотеки. Этот файл содержит
все необходимые декларации. Его необходимо будет иметь либо в рабочем каталоге проекта, либо в стандартном месте в системе C++ Builder.
Простейшая программа, которую мы будем разрабатывать с использованием VCL VidGrab, должна принимать изображение с подключенной Web-камеры и по команде из окна приложения отображать видеоинформацию. Кроме того, необходимо предусмотреть возможность переключения размеров отображаемой картинки и возможность изменения частоты кадров. Тогда рабочее
окно программы может выглядеть так, как это иллюстрирует рисунок. Напомним, что пакет VidGrab является условно-бесплатным, и с этим связано спорадическое появление на экране предупреждающих надписей, что можно видеть и на рис. 5.13.
Кнопка START/RESTART PREVIEW будет запускать просмотр изображения и перезапускать просмотр после изменения параметров. Группа радиокнопок Video Size позволяет выбрать один из трех вариантов размера области
отображения. Зона редактирования и подтверждающая кнопка Frame Rate
дают возможность ввести частоту кадров. Кнопка STOP PREVIEW закрывает
область отображения, а кнопка CLOSE закрывает программу.
Высокоуровневое программирование на основе использования VCL весьма экономично с точки зрения размера исходного кода программы. Поэтому
текст основного модуля, представленного в листинге, выглядит очень ком
-
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
