Usb-webcam, Delphi

Тема в разделе "Delphi - Компоненты", создана пользователем vouk03, 15 сен 2005.

Статус темы:
Закрыта.
  1. vouk03

    vouk03 Гость

    Хочу из программы на Delphi управлять USB веб-камерой: делать снимки по событию и иметь результат, как переменную. Есть ли такой компонент или как иначе это сделать?
     
  2. vouk03

    vouk03 Гость

    Масса народу смотрела - никто не отозвался. Неужели никто ничего не знает? Или это неинтересно? Объясняю. В поле зрения камеры находится, к примеру, 10 объектов. Время от времени с ними что-то происходит. Нужно отреагировать. Есть масса применений, поделюсь идеями, если кто скажет, как подключить.
     
  3. Barmutik

    Barmutik Гость

    А Вы искать сами пробовали ?

    Всё описано в хелпе и ищется за 10 минут ... пример написан за 5 минут .. так что не взыщите ...

    Код (Text):
    const
    WM_CAP_START         = WM_USER;
    WM_CAP_STOP          = WM_CAP_START + 68;
    WM_CAP_DRIVER_CONNECT     = WM_CAP_START + 10;
    WM_CAP_DRIVER_DISCONNECT   = WM_CAP_START + 11;
    WM_CAP_GRAB_FRAME       = WM_CAP_START + 60;
    WM_CAP_EDIT_COPY       = WM_CAP_START + 30;
    WM_CAP_DLG_VIDEOSOURCE     = (WM_CAP_START+ 42);

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


    procedure TForm1.BClick(Sender: TObject);
    begin
    if B.Caption = 'Start' then
    begin
     hWndC := capCreateCaptureWindowA('My Own Capture Window',
                      WS_CHILD or WS_VISIBLE ,
                      0,
                      0,
                      352,
                      288,
                      Form1.Handle,
                      0);
     if hWndC <> 0 then
     begin
      SendMessage(hWndC, WM_CAP_DRIVER_CONNECT, 0, 0);
      B.Caption := 'Stop';
      Timer1.Enabled := True;
     end;
    end else
    begin
     B.Caption := 'Start';
     Timer1.Enabled := False;
     if hWndC <> 0 then
     begin
      SendMessage(hWndC, WM_CAP_DRIVER_DISCONNECT, 0, 0);
      hWndC := 0;
     end;
    end;
    end;

    procedure TForm1.Timer1Timer(Sender: TObject);
    var s : string;
    begin
    if (hWndC <> 0) and (SendMessage(hWndC, WM_CAP_GRAB_FRAME, 0, 0) = 1) and
      (SendMessage(hWndC, WM_CAP_EDIT_COPY, 0, 0) = 1) and (Clipboard.HasFormat(CF_BITMAP)) then
    begin
     s := TimeToStr(Time);
     s[3] := '.';
     s[6] := '.';
     s := DateToStr(Date) + ' - ' + s + '.jpg';
      BMP.Assign(Clipboard);
     JPG.Assign(BMP);
     JPG.Compress;
    //  JPG.SaveToFile(SavePath + s);
    end;
    end;
    Вызов настроек
    Код (Text):
     if hWndC <> 0 then
     SendMessage(hWndC, WM_CAP_DLG_VIDEOSOURCE, 0, 0);
     
  4. vouk03

    vouk03 Гость

    Barmutik'у: Виноват конечно, но заслуживаю снисхождения: не программист я вообще-то. Спасибо большое, я не надеялся на такой подробный ответ, думал наводку только получить.
    Снимаю шляпу перед профессионалом :lol:
     
  5. zubr

    zubr Гость

    Есть очень неплохой компонент DSPACK234, у которого кроме захвата изображения есть множество других возможностей. Также захват не зависит от драйвера захвата.
     
  6. vouk03

    vouk03 Гость

    Zubr, а где взять компонет? "Масса возможностей" интригует, может пригодиться...
     
  7. Barmutik

    Barmutik Гость

    Задача вообщем то не сильно сложная ... просто если Вы не программист, то может стоит обратится со своей задачей к программистам ..

    Будет в итоге дешевле и по времени и по деньгам .. чем самому пробивать то в чём Вы не очень разбираетесь...

    А так не за что .. удачи! B)
     
  8. zubr

    zubr Гость

    Вот порылся у себя, нашел: здесь
     
  9. Chertik

    Chertik Гость

    Подскажите, пожалуйста.
    А есть ли иные способы сохранения изображения в память для обработки, кроме WM_CAP_EDIT_COPY. И как узнать его размеры и формат(программно). Я только столкнулся с этим вопросом и многого не знаю(студент).
     
  10. zubr

    zubr Гость

    Через DirectX. Тема довольно сложная, в 2-х словах не объяснишь. Скачай компонент DSPACK234, там все это реализовано в исходниках, также литературу поищи по DirectX.
     
Загрузка...
Похожие Темы - Usb webcam Delphi
  1. c0de3r
    Ответов:
    5
    Просмотров:
    127
  2. ghost

    usbdeath

    ghost, 5 окт 2016, в разделе: Kali Linux
    Ответов:
    0
    Просмотров:
    55
  3. inga1
    Ответов:
    4
    Просмотров:
    878
  4. linksmutis
    Ответов:
    1
    Просмотров:
    944
  5. slavon-x86
    Ответов:
    0
    Просмотров:
    1.044
Статус темы:
Закрыта.

Поделиться этой страницей