Sprint 3 ยท Herhaling, lists & video  ยท  US3: Video streaming

Als piloot, wil ik live zien wat de drone ziet en beelden kunnen bewaren, zodat ik na de vlucht kan terugkijken wat er gebeurde.

Taak 2: Frames verwerken terwijl je vliegt

Nu je frames kunt uitlezen, ga je ze echt verwerken: resizen, analyseren, en live statistieken tonen zonder de vlucht in gevaar te brengen.

Resizen en statistieken: per concept

Frames analyseren doe je in stappen: verklein eerst, haalt dan statistieken.

1. Resizen (720ร—960 โ†’ 360ร—240)

img_small = cv2.resize(img, (360, 240))

720 ร— 960 is 691.200 pixels, 360 ร— 240 is 86.400 pixels: 8x minder pixels, dus ongeveer 8x minder rekenwerk.

2. Helderheid (gemiddelde)

brightness = img_small.mean()

Getal: 0 (zwart) tot 255 (wit).

3. Contrast (bereik)

contrast = img_small.max() - img_small.min()

Getal: 0 (eenkleur) tot 255 (veel verschil).

4. Per kleurkanaal (RGB)

blue_avg = img[:, :, 0].mean()
red_avg = img[:, :, 2].mean()

Index 0=Blue, 1=Green, 2=Red.

5. Beweging (frame-verschil)

diff = cv2.absdiff(frame1, frame2)
motion = diff.mean()  # 0 = stilstand, 255 = chaos

Vergelijken twee frames โ†’ beweging.

Zie analyse-getallen

Tip: Niet elk frame analyseren. Elk 5e frame sneller: if frame_count % 5 == 0: brightness = ...

Opdracht: 50 frames analyseren

Schrijf een script frame_analyzer.py dat:

  1. Een Tello verbindt en de stream start.
  2. 50 frames ophaalt en elk frame resized naar 360ร—240.
  3. Voor elk frame berekent: helderheid (brightness), contrast en gemiddelde kleurintensiteit per kanaal (R, G, B).
  4. Na alle 50 frames print: gemiddelde brightness over alle frames, minimum en maximum contrast.
  5. Na de lus netjes afsluit: streamoff() en end(), op niveau 0.

Acceptatiecriteria

  • Script heet frame_analyzer.py en importeert cv2.
  • Het script haalt minstens 50 frames op en resized elk naar 360ร—240.
  • Voor elk frame worden berekend: brightness, contrast en RGB-gemiddelden.
  • Het script verzamelt alle statistieken en print op het einde gemiddelden.
  • Geen cv2.imshow() nodig โ€” het gaat om analyse, niet display.