Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Работа с Web-камерой Добавлено: 17.03.07 17:07  

Автор вопроса:  Dark
Проблема такая:
Есть USB Web-камера, как можно получать изображение с камеры и сохранять его. Видео сохранять не надо, только одиночные ихображения.
vito дал пример кода:

                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);

Но он нерабочий: даже если объявить все необходимое остаются вопросы:
1) Метода SurfaceLoader нет в Microsoft.DirectX.Direct3D. Откуда он?
2)device здесь - устрйство вывода, а мне не нужно выводить изображение. Надо только получить его и сохранить в файл.
3) Как указать, что источник- Web-Camera?

Дописанный мной код компилируется, но не работает:

using Microsoft.DirectX.Direct3D;

                Surface Buff;
                PresentParameters presentParams = new PresentParameters();
                PresentParameters[] param = new PresentParameters[1];
                param[0] = presentParams;
                Device device = new Device(0, DeviceType.Hardware, null,CreateFlags.NoWindowChanges, param);                
                Buff = device.CreateOffscreenPlainSurface
                    (presentParams.BackBufferWidth, presentParams.BackBufferHeight, Format.A8R8G8B8, Pool.SystemMemory);
                device.GetFrontBufferData(0, Buff);                
                //SurfaceLoader.Save(@"scr.bmp", ImageFileFormat.Bmp, Buff);

Ответить

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

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



Разработчик Offline Client

Вопросов: 23
Ответов: 879
 Web-сайт: softvito.narod2.ru
 Профиль | | #1
Добавлено: 17.03.07 18:01

1) Метода SurfaceLoader нет в Microsoft.DirectX.Direct3D. Откуда он?
2)device здесь - устрйство вывода, а мне не нужно выводить изображение. Надо только получить его и сохранить в файл.


Microsoft.DirectX.Direct3D.SurfaceLoader
Если у тебя его нет, возможно у тебя более старая версия. У меня от декабря 2006.
Или специфика VB?
Работать этот пример естественно не будет, так как он берет изображение с "экрана".
Если ты изображение не выводишь, то здесь нужно подумать.
Хотя вопрос... А как ты выбираешь, что именно тебе нужно сохранить?

Ответить

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



Вопросов: 4
Ответов: 41
 Профиль | | #2 Добавлено: 17.03.07 18:31
У меня:
Assembly Microsoft.DirectX.Direct3D
    C:\WINDOWS\Microsoft.NET\DirectX for Managed Code\1.0.2902.0\Microsoft.DirectX.Direct3D.dll.
Специфика VB? Я пишу на C#. И вроде твой пример тоже :).
>А как ты выбираешь, что именно тебе нужно сохранить?
По нажатию кнопки изображение с камеры запишется в файл.

Ответить

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



Разработчик Offline Client

Вопросов: 23
Ответов: 879
 Web-сайт: softvito.narod2.ru
 Профиль | | #3
Добавлено: 18.03.07 00:18
Специфика VB? Я пишу на C#. И вроде твой пример тоже :).


Сорр ми.:) Совсем закрутился.
Весна. Кракодилы прилетели. Ну все в этом роде.:)
//-----------------
У меня.
Версия - 1.0.2902.0.
То есть одно и то же.
И такого метода нет?

Ладно давай еще раз по прядку.
По нажатию кнопки изображение с камеры запишется в файл.

Но если ты его на экран не выводишь?
Или я что -то не понимаю?

Допустим, у меня на USB висит камера(так оно на самом деле и есть), и я могу наблюдать свою физиономию в небольшом окошке на экране монитора.
По нажатию кнопки, я могу записать видеоролик или сделать скрин.
Так или нет?

Ответить

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



Разработчик Offline Client

Вопросов: 23
Ответов: 879
 Web-сайт: softvito.narod2.ru
 Профиль | | #4
Добавлено: 18.03.07 01:22
Боюсь, что разочарую.
MS написала, что из 9 DX удалены все возможности по работе с видео (это DirectShow), как не имеющие отношения к разработке игр.
Думаю причины конечно не в этом, просто конкурентов поразвелось...
В общем, как это ни странно, если хотим написать что -то вроде Nero или Winamp'а - добро пожаловать в 8 SDK.
Не ожидал... Честное слово.
В общем в 9 что для управляемого, что для неуправляемого - ничего нет кроме простого воспроизведения видео.

Извини. Для меня это конечно все равно, потому как пишу я на С/С++, а не на С#.
С# - это просто небольшие пробы, чтобы идти в ногу со временем. И составить собственное мнение о новой технологии. И хотя я в свое время довольно серьезно в это влез, на NET я так и не перешел.
А тот пример который я привел -это тоже написано для сравнения "старого" и "нового". И по скорости и по удобству реализации. Я просто переписал 3 своих примера с родного С++ на C# и Men. С++.

Можно конечно попробовать реализовать это на C# и 8 DX. Но стоит ли?

Дамс - Сусанин герой. Это я о себе.:)

Ответить

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



Вопросов: 4
Ответов: 41
 Профиль | | #5 Добавлено: 18.03.07 07:01
Я нашел на codeproject.com как это сделать через DirectShow (http://www.codeproject.com/cs/media/directshownet.asp). Очень хороший пример, есть все необходимое. Автор статьи (NETMaster) написал библиотеку DShowNET.dll, через которую все удобно делается.

Ответить

Страница: 1 |

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



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