![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 23.12.2015
Сообщений: 22
|
![]()
Всем доброго времени суток. У меня проблема. С помощью Процедуры capCreateCaptureWindowA пытаюсь вывести изображение с веб камеры в программно созданный BitMap.
Код:
Код:
Если задача кажется легкой - то решать её придется очень долго.
|
![]() |
![]() |
![]() |
#2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Чтиво, эт можно: http://www.programmersclub.ru/Получе...-с-веб-камеры/
I'm learning to live...
|
![]() |
![]() |
![]() |
#3 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
![]()
Вас интересует готовый код или вы хотите разобраться в вопросе?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
![]() |
![]() |
![]() |
#4 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
![]()
С новым годом!
Данным давно, когда процессоры были медленными, а программисты носили бороды, родилась технология оверлеев. Было это эдак в конце 80-тых, начале 90-тых годов н.э. В те далёкие годы операция умножение занимала более 10 тактов. А алгоритм конвертирования YUV в RGB более 100 тактов. И встал вопрос как быть американские телевизоры и камеры работали в стандарте YUV. А компьютерные мониторы в стандарте RGB. Если прикинуть, то для картинке 640х480 требовалось более 30 МГц. А для картинке 320х240 в 4 раза меньше 7,5 Мгц. А Это всего один кадр в секунду! В ту пору скорость центрального процессора была всего несколько десятков МГц (15-60 МГц). Получалось что в таком случае процессор будет всё время занят. Он будет всё время конвертировать картинку для вывода и у него не останется ни на что более времени. Ни на перетаскивания окна, ни на ввод символов. Инженеры подумали и решили возложить эту функцию на видеокарту. Оверлей - это аппаратная функция видеокарты, позволяющая накладывать изображения "поверх" основного экрана (первичной поверхности) без копирования видеопамяти. Что значительно ускоряет вывод изображения. Изначально такое наложение добивались кабелем вида "штаны". Затем перешли на цифровой аналоговый преобразователь(ЦАП). Цифроаналоговом преобразователе видеокарты (RAMDAC) в процессе формирования отправляемого на монитор видеосигнала построчно сканирует первичную поверхность, и когда доходит до изображения-оверлея, переключается на него. Микрософт в DX SDK для иллюстрации этого приводит следующую картинку: ![]() Применительно к DirectX7 оверлей - это поверхность DirectDraw, для вывода которой, в отличие от обычных поверхностей, не нужно выполнять блиттинг или перенос данных непосредственным доступом. Достаточно просто указать положение на экране и размеры оверлея, и он будет постоянно "висеть" перед первичной поверхностью, добавляясь к каждому кадру по описанному принципу (своего рода дополнительная первичная поверхность произвольного размера и положения). Т.к. добавление происходит непосредственно в RAMDAC, оверлей не изменяет содержимое первичной поверхности (не "портит" фон), и если убрать его - изображение восстановится само собой. В DX SDK оверлеи сравниваются с "листом прозрачной плёнки, который накладывается на экран". Не очень-то прозрачный, добавлю я от себя. Но общий принцип именно такой - можно накладывать этот лист на экран, потом убирать, и это нисколько не повлияет на содержимое экрана. Можете лично проверить и убедиться ![]() С развитием техники функция оверлей перешла от ЦАП на графический процессор. Где добавилось возможность создавать несколько оверлеев, а также смешивать, комбинировать цвета. Что нашло применение в DirectX9 Также легко догадаться и логически убедиться натурально в невозможности получить скриншот этого "листа" (скриншот - это копия памяти первичной поверхности, а оверлей в память не копируется). Многие сталкиваются с этим при написании "грабилок" экрана или просто при попытке получить кадр любимого фильма. Единственное, что здесь можно посоветовать - отключить (попросить отключить пользователя) использование оверлеев в медиаплеере. Когда вы работаете с камерой через VFW, то там тоже самое изображение сформированное для предпросмотра выводится на оверлей. Задать режим работы можно при помощи функции Код:
Не рекомендуется копировать видео поток из окна предпросмотра. Во-первых это медленная операция. Так как требуется переслать данные из видеопамяти в системную память. А во-вторых картинка может быть растянута или же пройти через ряд фильтров которые снизят качество видеоматериала. А отключить или включить режим предпросмотра можно следующей функцией. Код:
При подготовки использовались следующие ссылки: 1) http://www.delphimaster.ru/articles/directx/ 2) https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . Последний раз редактировалось Pavia; 30.12.2015 в 15:22. |
![]() |
![]() |
![]() |
#5 | |
Пользователь
Регистрация: 23.12.2015
Сообщений: 22
|
![]() Цитата:
Я хотел бы разобраться в вопросе для дальнейшего использования знаний в своем проекте. Задача весьма специфична (хоть и для себя). Если у Вас есть готовый код (не обязательно готовый проект, копипаст не использую, пока не пойму как работает код) - буду очень признателен.
Если задача кажется легкой - то решать её придется очень долго.
|
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Невизуальная передача изображения с веб-камеры | Viktor_Ptica | Мультимедиа в Delphi | 2 | 26.12.2015 20:47 |
aBitmap : TBitmap; размер изображения | Downloads | Общие вопросы Delphi | 15 | 12.08.2013 17:22 |
TBitmap. Ошибка при загрузке изображения 640х480 | xrob | Мультимедиа в Delphi | 6 | 09.04.2013 20:54 |
Видео и Изображения из Камеры(тв-тюнера) | 100GRamm | Компьютерное железо | 2 | 09.10.2011 20:17 |
Delphi. Считывание данных с веб-камеры | AlessOn | Помощь студентам | 2 | 09.10.2010 00:04 |