Показать сообщение отдельно

  #3  
Старый 09.10.2009, 17:47
iama
Новичок
Регистрация: 06.08.2009
Сообщений: 14
С нами: 8822811

Репутация: 3
По умолчанию

обрабатываю два битмапа так -

Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
d1:=GetTickCount;
bmp2.Assign(bmp1); SampleGrabber1.GetBitmap(bmp1); if bmp2.Empty then exit;
k := 0;
for i := 0 to bmp1.Height - 1 do begin
  p1 := bmp1.ScanLine[i];  p2 := bmp2.ScanLine[i];
  for j := 0 to bmp1.Width - 1 do begin
    PriznakChange:=0;
    if p1 = p2 then continue;
    if (p1[j].r<>p2[j].r) and
      (p1[j].b<>p2[j].b) and
      (p1[j].g<>p2[j].g) then
      k:=k+1;
  end;
end; 
Caption := 'Static';
if k > 307200 * StrToInt(edit1.Text) div 1000 then begin
  bmp1.SaveToFile(FormatDateTime('hhnnss',Now)+'.bmp');
  Caption := 'Move';
  Application.ProcessMessages;
end; Caption := Caption + ' ' + IntToStr(k);
end;
Всё то работает хорошо, но такое чувство, что видеопоток опаздывает на 10-15 мсекунд. Изза чего это может быть? Частота обновления таймера - 100мс, процедура обработки занимает 20-30мс.

Последний раз редактировалось iama; 09.10.2009 в 17:52..
 
Ответить с цитированием