v1.7.0

v1.7.0 fügt das Chunking und Reassembly von Framebuffern über die serielle Verbindung hinzu, sodass große Einzelbilder über die serielle Debug-Verbindung übertragen werden können, macht das Trennen-mit-Reset sicherer, indem das USB-Massenspeicherlaufwerk der Kamera geleert (und unter Windows ausgeworfen) wird, und aktualisiert den Beispielsatz. Das Release basiert auf Qt Creator 4.0.2 (dieselbe Basis wie das vorherige Release) und ergänzt Build-Unterstützung für quergebaute eingebettete Linux-Ziele wie den Raspberry Pi. Es gibt keine Breaking Changes.

Höhepunkte

  • Serielles Framebuffer-Chunking — große Framebuffer-Übertragungen werden in MTU-große Chunks aufgeteilt und in einem Pixelpuffer wieder zusammengesetzt, sodass große Einzelbilder über die serielle Debug-Verbindung übertragen werden können.

  • Sichereres Trennen-mit-Reset — das USB-Massenspeicherlaufwerk der Kamera wird vor dem Reset geleert (und unter Windows zwangsweise ausgeworfen), sodass das Dateisystem zuerst synchronisiert wird.

  • Atomares Speichern von Dateienmain.py und Keypoint-Dateien werden atomar geschrieben, was Beschädigungen verhindert und einen Pfadfehler behebt, der main.py an die falsche Stelle schrieb.

  • Raspberry Pi / eingebettetes Linux — Cross-Compile-Build-Unterstützung ist nun enthalten.

  • Aktualisierte Beispiele — ein Servo-Shield-Satz, neue Feature-Detection-Demos sowie Image-Reader-/Writer-Videobeispiele.

Neue Funktionen

  • Serielles Framebuffer-Chunking und -Reassembly. Framebuffer-Übertragungen werden in MTU-große Chunks aufgeteilt und in einem Pixelpuffer wieder zusammengesetzt, sodass große Einzelbilder über die serielle Debug-Verbindung mit einer Standard-MTU übertragen werden können. Ein Laufzeit-Handshake zur automatischen MTU-Aushandlung wurde hinzugefügt, dessen Firmware-Versionsgrenze auf 2.5.0 gesetzt ist, passend zur 2.5.0-Firmware, die im selben Commit mitgeliefert wird (96458ccef). Die Grenze wurde dann für das Release auf 9.9.9 angehoben, was keine ausgelieferte Firmware meldet, sodass Kameras die Standard-MTU verwenden und keine Aushandlung stattfindet (abd1dacb9).

  • Leeren/Auswerfen beim Trennen-mit-Reset. Das Trennen mit Reset leert nun das USB-Massenspeicherlaufwerk der Kamera vor dem Reset: Unter Windows wird das Laufwerk zwangsweise ausgeworfen, während unter Linux und macOS das Dateisystem des Laufwerks synchronisiert wird (syncfs / sync_volume_np). Bei einem Fehler wird auf allen drei Plattformen ein Fehler Failed to eject gemeldet (243618791, ff6b15aff, 1865ffd31, 4fd4e89cf).

  • Servo-Shield-Beispiele. Einen Beispielsatz 15-Servo-Shield hinzugefügt, der PCA9685-gesteuerte Servos demonstriert, einschließlich eines Treibers pca9685.py und eines Helfers servo.py (abd1dacb9).

  • Neue Feature-Detection-Beispiele. find_circles (Hough), find_rects (Quad-Threshold), find_numbers (LeNet-Ziffernerkennung) sowie schnelle und robuste Beispiele zur linearen Regression unter 09-Feature-Detection hinzugefügt (abd1dacb9).

  • Video- und Board-Steuerungs-Beispiele. Image-Reader-/Writer-Beispiele zum Aufzeichnen und Wiedergeben von Schnappschuss-Streams von der SD-Karte, ein RTC-Board-Steuerungs-Beispiel und einen On-Camera-Unit-Test-Runner hinzugefügt (abd1dacb9).

Weitere Änderungen und Verbesserungen

  • Den Beispielordner 99-Tests (vormals 15-Tests) umbenannt und den Runner unittests.py hinzugefügt (abd1dacb9).

Fehlerbehebungen

  • Das Speichern von main.py und Keypoint-Dateien gehärtet. Die Schreibvorgänge wurden in (4fd4e89cf) auf atomare FileSaver-Schreibvorgänge (schreiben, dann abschließen) umgestellt, und ein fehlender Pfadtrenner, der main.py an die falsche Stelle schrieb, wurde in (1865ffd31) behoben.

  • Die serielle Zuverlässigkeit verbessert, indem der serielle Lesepuffer auf allen Ports auf 1 MB vergrößert und der Lese-Stall-Timeout erhöht wurde, was verworfene Daten bei QSerialPort adressiert (7f68368dc).

  • Einen Layout-Fehler des Fenster-Splitters behoben, indem MainWindow exportiert und ein Show-Event-Signal ausgegeben wird, damit das OpenMV-Plugin das Layout wiederherstellen kann, wenn das Hauptfenster angezeigt wird (4895e20b7).

Plattform- und Tool-Unterstützung

  • Qt-Creator-Basis: 4.0.2.

  • Build-Unterstützung für quergebaute eingebettete Linux-Ziele wie den Raspberry Pi hinzugefügt: stellt Qt-Schriftarten bereit, korrigiert die chrpath/RPATH-Behandlung, baut Übersetzungen mit Host-Binärdateien und fügt eine fehlende qml-Abhängigkeit hinzu (73c052fcc, 8f0baa131, 5b9e9e82e, 45011ec2a).

  • Die mitgelieferte OpenMV-Firmware von 2.4.1 auf 2.5.0 aktualisiert (96458ccef).

  • Die Firmware-Ordner OMV2/OMV3 in OPENMV2/OPENMV3 umbenannt und aktualisierte, neu gebaute STM32F427- (OPENMV2) und STM32F765- (OPENMV3) Firmware- und Bootloader-Binärdateien ausgeliefert (abd1dacb9).

Breaking Changes

Keine. Dieses Release führt keine für den Anwender sichtbaren Workflow- oder Verhaltensänderungen ein, und bestehende Projekte funktionieren unverändert weiter.