Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.02.12;
Скачать: CL | DM;

Вниз

Как захватить кадр, используя DirectShow ?   Найти похожие ветки 

 
palgen ©   (2005-08-31 14:40) [0]

Подскажите как с помошью DirectShow получать картинку в буфер обмена (из видеопотока, допустим, раз в секунду) с разрешением 720*576, а затем (ежесекундно) помещать этот захваченный кадр на TImage ?


 
palgen ©   (2005-09-02 07:07) [1]

Неужели никто не знает ?


 
Ботвин Дмитрий   (2005-09-02 08:16) [2]

DSPack тебе поможет. Там в примерах уже что-то подобное реализовано...


 
palgen ©   (2005-09-02 09:30) [3]

Как можно выставить разрешение сграбленного фрейма ...
Лучше кодом, а то в  хелпе DSPack я этого не нашел ...


 
Ботвин Дмитрий   (2005-09-02 13:13) [4]

Для JPEG можно так:

procedure GetResJpg(JPGFile: string);
const
  BufferSize = 50;
var
  Buffer: string;
  Index: integer;
  FileStream: TFileStream;
  HorzRes, VertRes: Word;
  DP: Byte;
  Measure: string;
begin
  FileStream := TFileStream.Create(JPGFile,
    fmOpenReadWrite);
  try
    SetLength(Buffer, BufferSize);
    FileStream.Read(buffer[1], BufferSize);
    Index := Pos("JFIF" + #0$00,buffer);
    if Index > 0 then
    begin
      FileStream.Seek(Index + 6, soFromBeginning);
      FileStream.Read(DP, 1);
      case DP of
        1: Measure := "DPI"; //Dots Per Inch
       2: Measure := "DPC"; //Dots Per Cm.
     end;
      FileStream.Read(HorzRes, 2); // x axis
     HorzRes := Swap(HorzRes);
      FileStream.Read(VertRes, 2); // y axis
     VertRes := Swap(VertRes);
    end
  finally
    FileStream.Free;
  end;
end;

procedure SetResJpg(name: string; dpix, dpiy: Integer);
const
  BufferSize = 50;
  DPI = 1; //inch
 DPC = 2; //cm
var
  Buffer: string;
  index: INTEGER;
  FileStream: TFileStream;
  xResolution: WORD;
  yResolution: WORD;
  _type: Byte;
begin
  FileStream := TFileStream.Create(name,
    fmOpenReadWrite);
  try
    SetLength(Buffer, BufferSize);
    FileStream.Read(buffer[1], BufferSize);
    index := POS("JFIF" + #0$00,buffer);
    if index > 0
      then begin
      FileStream.Seek(index + 6, soFromBeginning);
      _type := DPI;
      FileStream.write(_type, 1);
      xresolution := swap(dpix);
      FileStream.write(xresolution, 2);
      yresolution := swap(dpiy);
      FileStream.write(yresolution, 2);
    end
  finally
    FileStream.Free;
  end;
end;

а для bmp поищи в инете - примеров много...


 
vrem   (2005-09-02 19:18) [5]

зачем 720, 768*576 захватывается


 
palgen ©   (2005-09-05 07:52) [6]

vrem   (02.09.05 19:18) [5]
зачем 720, 768*576 захватывается

А каким образом ?


 
vrem   (2005-09-05 19:21) [7]

[6] palgen ©   (05.09.05 07:52)
>А каким образом ?
dscaler, www.dscaler.org, с исходными кодами - но вроде не на дельфи. Причём я рассматривал получающуюся картинку - там нет повторений, все 768 точек разные. обычно отбрасываются, т.к. тв плохо отображает по краям экрана



Страницы: 1 вся ветка

Текущий архив: 2006.02.12;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.056 c
2-1138189222
Proxytel
2006-01-25 14:40
2006.02.12
Управление курсором мыши


15-1137777157
Толик
2006-01-20 20:12
2006.02.12
Своя папка с файлами на FTP сервере


15-1138086687
konda
2006-01-24 10:11
2006.02.12
Языковая панель в Windows XP


2-1138185876
Костян
2006-01-25 13:44
2006.02.12
В чем лучше хранить данные


2-1137662162
tigra
2006-01-19 12:16
2006.02.12
Непонятка с exeшником