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 3: Frames opslaan als PNG

Vastleggen is belangrijk: sla frames op als afbeeldingen zodat je ze later kunt analyseren โ€” stap voor stap documentatie van je vlucht.

Opslaan: bestandsnamen en organisatie

Frames opslaan is makkelijk, maar de structuur eromheen is cruciaal. Anders verlies je overzicht.

1. Bestandsnaam-nummering

Unieke naam per frame (001, 002, ...):

frame_count += 1
filename = f"frame_{frame_count:03d}.png"
cv2.imwrite(filename, img)

{frame_count:03d} = 3 digits met nullen voor juiste sorteer-volgorde.

2. Directory-organisatie

Frames in mappen ipv root:

import os
output_dir = "recordings/flight_001"
os.makedirs(output_dir, exist_ok=True)
filename = os.path.join(output_dir, f"frame_{frame_count:03d}.png")

3. Bestandsformaat kiezen

PNG (groot) of JPEG (klein):

# PNG
cv2.imwrite(filename, img)

# JPEG (kwaliteit 90)
cv2.imwrite(filename, img, [cv2.IMWRITE_JPEG_QUALITY, 90])

4. Foutafhandeling

Checken of opslaan gelukt is:

success = cv2.imwrite(filename, img)
if not success:
    print(f"Fout: {filename}")

Zie nummering-patronen

Ruwe frames zijn groot. Altijd resizen voordat je opslaat, anders verlies je schijfruimte veel sneller dan je verwacht.

Opdracht: Tien frames capteren en opslaan

Schrijf een script frame_capture.py dat:

  1. Een directory frames aanmaakt (of hergebruikt).
  2. Een Tello verbindt en de stream start.
  3. Tien frames ophaalt, resized naar 360ร—240, en elk opslaat als frame_001.png, frame_002.png, etc.
  4. Na elk frame print: Saved: frame_NNN.png (W x H).
  5. Na alle tien frames print hoeveel frames er zijn opgeslagen, en de eerste en de laatste bestandsnaam uit je lijst.

Acceptatiecriteria

  • Script heet frame_capture.py en importeert os en cv2.
  • De frames directory wordt aangemaakt met os.makedirs(dir, exist_ok=True).
  • Minstens tien frames worden opgeslagen met genummerde bestandsnamen (frame_001.png, etc).
  • Elk frame wordt resized naar 360ร—240 voordat het opgeslagen wordt.
  • De bestandsnamen staan in een lijst; stream en verbinding worden na de lus netjes afgesloten.