Главная страница
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.079 c
15-1138126379
cyborg
2006-01-24 21:12
2006.02.12
Актуальная тема


1-1136939802
plop
2006-01-11 03:36
2006.02.12
Visio + Delphi


11-1119439102
rAx
2005-06-22 15:18
2006.02.12
не могу использовать свойство HINT для меток


3-1134652090
vale88
2005-12-15 16:08
2006.02.12
Выбор определенного количества записей


15-1137944178
Kerk
2006-01-22 18:36
2006.02.12
650летие Самары