Для обнаружения движения есть множество  быстрых и простых  способов.
На пример вот одно из моих "коронных"  

  решений "в лоб".... сделано очень примитивно и неоптимально.   
Но в простейшем случае работает . (Хотя в данном случае  нет поиска нескольких движущихся объектов  но абстрактное движение "вообще" вполне ловит и выделяет в рамку   )  

(Видимый "тормоз" просто низкая частота кадров  при записи гифа в реальности все работает  быстрее и по ощущениям  вообще без задержки  )
- Код: Выделить всё
- Function FastCompBW(C:Byte;Var R:TRect; Bitmap,B: TBitmap):bool;
 // Сравнение двух кадров (ЧБ вариант)
 Type
 RGB1=Record  R,G,B  : byte; end;
 Const
 DT:Boolean=false;
 var
 MinX, MinY: Integer;
 MaxX, MaxY: Integer;
 X,Y: Integer;
 PixelPtr,PixelPtr2: PInteger;
 PixelRowPtr,PixelRowPtr2: PInteger;
 BytePerPixel: Integer;
 BW,BW2:Byte;
 PRGB,PRGB2:^RGB1;
 begin
 try
 Bitmap.BeginUpdate(False);
 Result:=False;
 //RawImage := Bitmap.RawImage;
 PixelRowPtr := PInteger(Bitmap.RawImage.Data);
 PixelRowPtr2 := PInteger(B.RawImage.Data);
 BytePerPixel := Bitmap.RawImage.Description.BitsPerPixel div 8;
 minX:= Bitmap.Width; MaxX:=0;
 minY:= Bitmap.Height; MaxY:=0;
 
 for Y := 0 to Bitmap.Height - 1 do begin
 PixelPtr := PixelRowPtr;
 PixelPtr2 := PixelRowPtr2;
 for X := 0 to Bitmap.Width - 1 do begin
 PRGB :=Pointer(PixelPtr);
 PRGB2:=Pointer(PixelPtr2);
 
 BW:=(PRGB^.R+PRGB^.G+PRGB^.B) div 3;
 BW2:=(PRGB2^.R+PRGB2^.G+PRGB2^.B) div 3;
 If   ( Abs( bw - bw2 )> C ) then
 begin
 result:=True;
 MaxX:=Max(X,MaxX); MaxY:=Max(MaxY,Y);
 minX:=min(minX,X); minY:=min(minY,Y);
 R:= rect(minX, minY, maxX,maxY);
 end;
 Inc(PByte(PixelPtr), BytePerPixel);
 Inc(PByte(PixelPtr2), BytePerPixel);
 end;
 Inc(PByte(PixelRowPtr),Bitmap.RawImage.Description.BytesPerLine);
 Inc(PByte(PixelRowPtr2),Bitmap.RawImage.Description.BytesPerLine);
 end;
 finally
 Bitmap.EndUpdate(False);
 end;
 end;
 
Однако фокус в том, что скорости  при "прямом доступе"  более чем  достаточно что бы использовать даже это "рукоделье" без уменьшения разрешения .  
Зы
О да! Тут точно не  одна "строчка кода". + есть встроенное "обесцвечивание".  

 но и задача совсем другая чем "просто пройти по коридору"  

  то бишь сравнить два изображения на тождество ..
Хотя  разнообразная оптимизация просто напрашивается например можно проверять  
не каждую точку  а 
сетку точек причем  со смещением от кадра к кадру.(что будет даже быстрее чем при использовании предварительного масштабирования + исчезнет проблема "мыла" в изображении    )
Зы Зы
Испытать детектор движения  лично можно тут  
 Truba_DS_0_0059_14_2_5_Bin.7z
  Truba_DS_0_0059_14_2_5_Bin.7z 
  "Запуск трансляции ." ->"Окно цифровые эффекты" -> фильтр 'Выделить движение'  Чувствительность "меньше лучше "...  экспериментально лучшие значение около 50... требуется веб камера или её эмулятор...