Работа с вебкамерой

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
GrenDaiZer
Сообщения: 3
Зарегистрирован: 25 фев 2007, 22:30

--------------------------------------------------------------------------------

Пожалуйста, подскажите кто-нибудь как работать с вебкамерой в Deplhi, какие компоненты нужны. Необходимо иметь возможность получить с вебкамеры как картинки, так и видео. Спасибо заранее за помощь.
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

Код: Выделить всё

const WM_CAP_DRIVER_CONNECT         = WM_CAP_START + 10;
const WM_CAP_DRIVER_DISCONNECT      = WM_CAP_START + 11;
const WM_CAP_SAVEDIB                = WM_CAP_START + 25;
const WM_CAP_GRAB_FRAME             = WM_CAP_START + 60;
const WM_CAP_SEQUENCE               = WM_CAP_START + 62;
const WM_CAP_EDIT_COPY              = WM_CAP_START + 30;
const WM_CAP_GRAB_FRAME_NOSTOP        = WM_CAP_START + 40;

function capCreateCaptureWindowA(lpszWindowName : PCHAR;
                                 dwStyle : longint;
                                 x : integer;
                                 y : integer;
                                 nWidth : integer;
                                 nHeight : integer;
                                 ParentWin  : HWND;
                                 nId : integer): HWND;
                                 STDCALL EXTERNAL 'AVICAP32.DLL';

...... Bla-Bla-Bla-Bla-Bla-Bla-Bla ......

hWndC := capCreateCaptureWindowA('My Own Capture Window',
                                   WS_CHILD or WS_VISIBLE ,
                                   Panel.Left,
                                   Panel.Top,
                                   Panel.Width,
                                   Panel.Height,
                                   YourForm.Handle,
                                   0);
SendMessage(hWndC, WM_CAP_DRIVER_CONNECT, 0, 0);
SendMessage(hWndC, WM_CAP_GRAB_FRAME, 0, 0);
SendMessage(hWndC, WM_CAP_EDIT_COPY, 0, 0);
b := TBitmap.Create;
b.LoadFromClipBoardFormat(cf_BitMap,ClipBoard.GetAsHandle(cf_Bitmap),0);
Простейший захват картинки с видеокамеры, используя виндовый Capture driver.
Создает окно захвата. Все общение с драйвером происходит на уровне сообщений окна. Результат перекидывается через клипборд.
It's a long way to the top if you wanna rock'n'roll
BBB
Сообщения: 1298
Зарегистрирован: 27 дек 2005, 13:37

somewhere писал(а):Простейший захват картинки с видеокамеры, используя виндовый Capture driver.
Создает окно захвата. Все общение с драйвером происходит на уровне сообщений окна. Результат перекидывается через клипборд.
Есть функция сохранения картинки сразу в BMP-файл, безо всяких клипбордов:
capFileSaveDIB
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

&quot писал(а):Есть функция сохранения картинки сразу в BMP-файл, безо всяких клипбордов:
А в файл его никто не сохранял. В примере он в памяти, никаких файлов не создает. Можно конечно через CallBack функции пойти, чтобы клипборд не трогать - но это уже примером не назовешь :-)
It's a long way to the top if you wanna rock'n'roll
BBB
Сообщения: 1298
Зарегистрирован: 27 дек 2005, 13:37

somewhere писал(а):А в файл его никто не сохранял. В примере он в памяти, никаких файлов не создает. Можно конечно через CallBack функции пойти, чтобы клипборд не трогать - но это уже примером не назовешь :-)
Я подразумевал, что раз ты тягаешь картинку с видеокамеры, то, скорее всего, тебе захочется ее сохранить где-нибудь на диске. Тогда capFileSaveDIB как раз, на мой взгляд, очень удобна.
GrenDaiZer
Сообщения: 3
Зарегистрирован: 25 фев 2007, 22:30

Спасибо за помощь, друзья!!!
Ответить