Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Прикладное программирование на CC++ с нуля до мультимедийных и сетевых приложений

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
Ввод и вывод изображения 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 весь­ма экономично с точки зрения размера исходного кода программы. Поэтому текст основного модуля, представленного в листинге, выглядит очень ком
-