Als piloot, wil ik live zien wat de drone ziet en beelden kunnen bewaren, zodat ik na de vlucht kan terugkijken wat er gebeurde.
De eerste stap naar live video: hoe verbind je je met de video-feed van de drone, haal je frames op en sluit je alles netjes af.
Video-streaming bestaat uit drie fasen: initialisatie (verbinding + stream starten), ophalen (loop over frames), shutdown (netjes afsluiten).
Verbinding maken en stream starten:
tello = Tello()
tello.connect()
tello.streamon()
time.sleep(2) # Wacht op buffering!
De wacht is cruciaal โ zonder krijg je None-frames.
Je vraagt de frame-lezer รฉรฉn keer op. Daarna haal je in een for-lus steeds het nieuwste frame op,
controleer je het en laat je het zien. De lus heeft een maximum, en met q stop je eerder:
frame_read = tello.get_frame_read()
for frame_nr in range(300): # hooguit 300 frames, ongeveer 10 seconden
img = frame_read.frame
if img is None:
continue # nog geen beeld: door naar de volgende ronde
cv2.imshow("Tello", img)
key = cv2.waitKey(1) & 0xFF # 1 ms kijken of er een toets is ingedrukt
if key == ord('q'):
break # q = stoppen
Stream en verbinding netjes sluiten, nรก de lus, op niveau 0:
cv2.destroyAllWindows()
tello.streamoff()
tello.end()
Zie de 3-fasen timeline
None krijgt, wachten na streamon() te kort. Voeg extra time.sleep() toe.
Schrijf een script stream_capture.py dat:
for-lus vijf frames achter elkaar ophaalt (elk frame kost ~33 ms).Frame N: hoogte ร breedte, type: {type}, min/max: {min}/{max}Je hebt dus al deze imports:
from djitellopy import Tello
import time
Acceptatiecriteria
stream_capture.py en importeert Tello en time.connect() en streamon() wacht het script 2 seconden.streamoff() en end() staan onderaan het script, na de lus, op niveau 0.NoneType-fouten.