Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Как полученить изображение с невидимого DC? Добавлено: 22.08.08 15:33  

Автор вопроса:  Vasiliy
Допустим у нас веб-камера, подсоединяемся к ней через виндоузовский wm_cap драйвер, получаем дескриптор окна, куда она выводит видеопоток, дальше нам нужно получить информацию о пикселах этого изображения (я использовал GetBitmapBits т.к. быстрая функция) и обработать ее. Но это все работает только пока окно видимое, а если его изначально делать невидимым, то получить с него информацию таким способом не получается.
Пока читал доки по работе с веб-камерами нашел, что с помощью WM сообщения можно получить отдельный кадр с этой камеры, а потом либо сохранить его на диск в формате BMP, либо копировать в буфер обмена. Жесткий диск мне жалко, поэтому я пытался копировать в буфер, получалось 3-5fps, но это когда камера одна, а когда несколько - такой способ не годится.
Ищу новые способы получения видеопотока с камеры и пришел к выводу что снимать изображение с DC - наверное один из самых быстрых, но когда DC не видно, возникают проблемы.. :(

Заранее спасибо!


Ответить

  Ответы Всего ответов: 6  

Номер ответа: 1
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #1
Добавлено: 22.08.08 15:47
В таком случае надо перехватывать видеопоток драйвером. Я бы именно так и сделал. Это самый быстрый и аккуратный способ.

Ответить

Номер ответа: 2
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #2
Добавлено: 22.08.08 15:51
Или гугли avicap32.dll

Ответить

Номер ответа: 3
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #3
Добавлено: 22.08.08 15:59
Кстати, можно еще покопать в сторону Direct Show

Ответить

Номер ответа: 4
Автор ответа:
 Vasiliy



Вопросов: 9
Ответов: 18
 Профиль | | #4 Добавлено: 22.08.08 17:41
avicap32.dll и используем.. макрос capCreateCaptureWindow - создается новое окно и в него получает изображения с камеры с заданной частотой fps, потом оттуда преобразуем изображение и копируем его в созданный точеченый рисунок (CreateCompatibleBitmap) с помощью BitBlt, а из рисунка уже копирует биты (GetBitmapBits) и т.д. - вот "виновата" как раз функция BitBlt - она не умеет получать данные с невидимого DC. Если DC находится за пределами формы - то в качестве изображения идет то, что находится "под" ним, если поверх нашего DC что-нибудь находится - то идет то что поверх..

пример [url=http://d-tox.ru/mihail/tmp/cap_bitblt.rar]тут[/url]

Ответить

Номер ответа: 5
Автор ответа:
 Vasiliy



Вопросов: 9
Ответов: 18
 Профиль | | #5 Добавлено: 22.08.08 17:43
а че у нас php теги не работают, я понимаю что форум не на пхп, но к ним все привыкли(
и отредактировать сообщение нельзя(

Ответить

Номер ответа: 6
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #6
Добавлено: 22.08.08 18:25
Да вот.... не дают мне редактирование сделать. Можно хоть тег url добавить?))

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам