Страница: 1 |
Страница: 1 |
Вопрос: Работа с Web-камерой.
Добавлено: 06.03.07 04:22
Автор вопроса: Dark
Проблема такая:
Есть USB Web-камера, как можно получать изображение с камеры и сохранять его. Видео сохранять не надо, только одиночные ихображения.
Я так понимаю нужен DirectX SDK?
Можно ли это написать на C#/VB.NET не использую WinAPi?
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
vito
Разработчик Offline Client
Вопросов: 23
Ответов: 879
Web-сайт:
Профиль | | #1
Добавлено: 06.03.07 16:47
DirectX SDK конечно нужен. Но когда я просматривал возможности управляемого кода, я не нашел в классе отвечающем за работу с видео(Microsoft.DirectX.AudioVideoPlayback) возможности какого бы то ни было редактирования изображения.
Плеер (камеру) написать - очень легко.
А это все значит, что прийдется идти другим путем, обрабатывая поток вручную. Но учитывая, что реализация там скрыта, и специфику управляемого кода, я не знаю какие проблемы могут возникнуть.
Вот что может наш класс.
Finalize 'Called during garbage collection. If implemented, allows an object to free resources before it is destroyed by the garbage collector.
FromFile 'Creates a Video object from a file.
FromUrl 'Creates a Video object from a Uri object.
HideCursor 'Hides the cursor while playing video.
Open 'Loads a new file into the Video object.
Pause 'Pauses playback.
Play 'Starts playback.
raise_Disposing 'Raises the Video.Disposing event when called from within a derived class.
raise_Ending 'Raises the Video.Ending event when called from within a derived class.
raise_Pausing 'Raises the Video.Pausing event when called from within a derived class.
raise_Starting 'Raises the Video.Starting event when called from within a derived class.
raise_Stopping 'Raises the Video.Stopping event when called from within a derived class.
raise_TextureReadyToRender 'Raises the Video.TextureReadyToRender event when called from within a derived class.
RenderToTexture 'Enables the Video to trigger the TextureReadyToRender event to generate Texture objects for rendering video in Microsoft Direct3D.
SeekCurrentPosition 'Seeks to a specific playback postion.
SeekStopPosition 'Sets a new stop postion in playback.
ShowCursor 'Shows the cursor while playing video.
Stop 'Stops playback.
StopWhenReady Stops playback when the Video object is ready.
Video 'Initializes a new instance of the object.
Но впрочем если тебе нужно делать только скрины, это совсем не сложно. И реализовать это можно по разному.
Тка что, то что ты хочешь сделать можно.
Номер ответа: 2
Автор ответа:
Dark
Вопросов: 4
Ответов: 41
Профиль | | #2
Добавлено: 07.03.07 15:29
Мне нужны только скрины. Например нажимаешь на кнопку - скрин сохраняется на винт.
Номер ответа: 3
Автор ответа:
vito
Разработчик Offline Client
Вопросов: 23
Ответов: 879
Web-сайт:
Профиль | | #3
Добавлено: 07.03.07 17:55
Тогда проблем нет. И в принципе, написать это, можно очень быстро.
Номер ответа: 4
Автор ответа:
Dark
Вопросов: 4
Ответов: 41
Профиль | | #4
Добавлено: 08.03.07 13:18
Можешь дать пример кода который получает с камеры картинку? Я так понимаю в объект Image?
Номер ответа: 5
Автор ответа:
vito
Разработчик Offline Client
Вопросов: 23
Ответов: 879
Web-сайт:
Профиль | | #5
Добавлено: 09.03.07 11:18
Я делаю так.
{
if (!Windowed)
return;
Microsoft.DirectX.Direct3D.Surface Buff ;
Buff = device.CreateOffscreenPlainSurface(presentParams.BackBufferWidth, presentParams.BackBufferHeight, Format.A8R8G8B8, Pool.SystemMemory);
device.GetFrontBufferData(0, Buff);
SurfaceLoader.Save(@"scr.bmp", ImageFileFormat.Bmp, Buff);
}
Номер ответа: 6
Автор ответа:
Dark
Вопросов: 4
Ответов: 41
Профиль | | #6
Добавлено: 09.03.07 15:52
Thanks.