v2.7.0#

v2.7.0 では sensor の自動ゲイン/自動露出/ホワイトバランス API を物理単位(dB /マイクロ秒)に刷新し、位相相関の find_displacement() を全面的に見直して(回転/スケールを追加)、get_similarity()(SSIM)、chrominvar() / illuminvar()、追加のフレームバッファ、MQTT ライブラリを追加しました。これは大規模な互換性のないリリースです。以下の互換性のない変更点をお読みください。

ハイライト#

  • 最新のセンサー API — set_auto_gain() / set_auto_exposure() / set_auto_whitebal() が dB /マイクロ秒を使用するようになり、対応する get_gain_db() / get_exposure_us() / get_rgb_gain_db() が用意されました。

  • 位相相関 — find_displacement() を回転/スケールに対応させて再設計し、find_rotscale() / linpolar() / logpolar() を追加しました。

  • SSIM — image.get_similarity() の構造的類似度。

  • 追加のフレームバッファ — sensor.alloc_extra_fb() / dealloc_extra_fb()。

  • MQTT — 新しい MQTT ライブラリ。

  • 互換性に関する注意: センサーのゲイン/露出/ホワイトバランス API、find_displacement() / FFT フレームサイズ、find_number()、WINC ファームウェアツール、AprilTag の z_rotation() がすべて変更されました。互換性のない変更点を参照してください。

新機能#

  • センサー — sensor.get_gain_db()、sensor.get_exposure_us()、sensor.get_rgb_gain_db()、set_auto_gain() への gain_db_ceiling キーワード、MT9V034 の hmirror / vflip サポート、追加の RAM 内フレームバッファ用の sensor.alloc_extra_fb() / sensor.dealloc_extra_fb() を追加しました。

  • 画像 — remove_shadows()、min() / max()(フレーム差分)、構造的類似度の例付きの get_similarity()(SSIM)、chrominvar() / illuminvar()、find_rotscale()、linpolar() / logpolar()、mean() / mode() / median() / midpoint() 適応フィルタへの threshold / offset / invert キーワード、キーポイントオブジェクトの len() /インデックス指定、キーポイントマッチオブジェクトの .match() アクセサを追加しました。

  • ライブラリ/ネットワーク — MQTT ライブラリ(WiFi MQTT の例付き)と、デバッグ UART 経由で WINC ファームウェアをプログラムするための network.WINC.MODE_BSP モードを追加しました。

  • 例 — 低消費電力の deep_sleep.py / stop_mode.py、高度なオプティカルフロー、線形/対数極座標のサンプルスクリプトを追加しました。ファームウェアは起動時に uart.ini を解析して REPL UART を有効にするようになりました。

その他の変更と改善#

  • get_regression() に area_threshold / pixels_threshold キーワードと、より高速で頑健な回帰(ライントレース/レース用)を追加しました。get_pixel() が Bayer 画像をサポートするようになりました。STM32H7 の基盤整備(CMSIS ヘッダ/HAL /ブートローダー、H7 ボードはまだ使用できません)を追加し、同梱の WINC1500 ファームウェア(19.4.4 / 19.5.2)を更新しました。

バグ修正#

イメージング:

  • find_template() のダイヤモンドサーチの範囲外バグ、logpolar / linpolar の破損、およびゼロに近いカラー値で illuminvar() が暴走する問題を修正しました。

センサーとシステム:

  • 自動ゲイン制御のバグ、snapshot() 時の MAIN_FB サイズの復元(これにより異なる解像度での copy_to_fb、FB のリサイズ、オプティカルフローのプーリングが再び機能します)、WINC の gethostbyname タイムアウト、H7 ブートローダーでの pydfu clear-status、および低消費電力の stop/standby モードを修正しました。

ハードウェアとボードのサポート#

  • STM32H7 — 基盤整備(CMSIS / HAL /ブートローダー)。OpenMV H7 ボードは本リリースではまだ使用できません。

  • WINC1500 — 同梱ファームウェアの更新。

互換性のない API 変更#

v2.6.0 と v2.7.0 の間でユーザーから見える API の互換性のない変更点です。対象範囲: modules/ 内の Python C モジュールと scripts/libraries/ 内の Python ライブラリ。

各変更には影響度のタグが付いています:

  • major — その機能を使っていたほとんどのスクリプトに影響します。コードの移植が必要です。

  • minor — 限定的な API です。それを使っていたスクリプトにのみ影響します。

  • behavior — API は同じですが結果が異なります。調整済みのスクリプトを再確認してください。

変更はこの順序で影響度ごとにグループ化されています。コードを移植したいだけであれば、末尾の 移行チェックリスト に進んでください。各コミットハッシュは GitHub 上の差分にリンクしています。

sensor.set_auto_gain() が dB に再設計されました (major)#

sensor.set_auto_gain() は整数の value= キーワードを受け付けなくなり、True / False も返さなくなりました。sensor.set_auto_gain(False, gain_db=...)(浮動小数点の dB 値)を使用し、新しい sensor.get_gain_db() で読み戻してください。失敗時には ValueError が発生するようになったため、呼び出しを try / except で囲んでください。

コミット: b906c5f19

sensor.set_auto_exposure() がマイクロ秒に再設計されました (major)#

sensor.set_auto_exposure() は整数の value= キーワードを受け付けなくなり、True / False も返さなくなりました。sensor.set_auto_exposure(False, exposure_us=...) を使用し、新しい sensor.get_exposure_us() で読み戻し、失敗時に発生する ValueError を処理してください。

コミット: 7be0a7a18

find_displacement() / FFT フレームサイズの全面的な見直し (major)#

位相相関が全面的に見直されました。image.find_displacement() は変位オブジェクト(x_translation() / y_translation() — 旧 x_offset / y_offset — に加えて rotation() / scale() と新しい logpolar / fix_rotation_scale キーワードを持つ)を返すようになりました。別個の rot-scale オブジェクトは削除され、find_rotscale() が追加されました。FFT フレームサイズ定数は名称変更/削除されました: sensor.B40x30 は完全に削除され、sensor.B64x32 / B64x64 は大文字の sensor.B64X32 / B64X64 に名称変更されました(新たに B128X64 / B128X128 を追加)。

コミット: c78f91b42, 213396d09

sensor.set_auto_whitebal() が dB に再設計されました (minor)#

sensor.set_auto_whitebal() は整数の value=[r, g, b] キーワードを rgb_gain_db=[r, g, b](浮動小数点の dB)に置き換え、True / False の代わりに None を返すようになりました(失敗時は ValueError を発生させます)。ゲインを読み戻すには新しい sensor.get_rgb_gain_db() を使用してください。

コミット: 30ecbdc4f

set_hmirror() / set_vflip() が None を返すようになりました (minor)#

sensor.set_hmirror() と sensor.set_vflip() は、True / False のステータスを返す代わりに None を返し、失敗時には ValueError を発生させるようになりました。それらの戻り値で分岐するコードを削除してください。

コミット: aeb023804

WINC ファームウェアツールがファイルパスを必要とするようになりました (minor)#

network.WINC のファームウェアツールが変更されました: wlan.fw_dump() / wlan.fw_update() は必須のファームウェアファイルパス引数を取るようになり、WINC はプログラミングモード(network.WINC(mode=...))で開かれます。引数なしの呼び出しを、パスを渡すように更新してください(例: wlan.fw_update("/winc_19_5_2.bin"))。

コミット: fcc3b0b9c

image.find_number() が 28x28 の ROI を必要とするようになりました (behavior)#

image.find_number()(LeNet)は、画像内に収まる正確に 28x28 の ROI を必要とするようになり、そうでない場合はエラーを発生させます(任意の/画像全体の ROI で実行する代わりに)。明示的に roi=(x, y, 28, 28) を渡してください。

コミット: 4d09a13f3

AprilTag の z_rotation() の符号が反転しました (behavior)#

AprilTag の z_rotation()(および関連する rotation())が右手系の座標規則を使用するようになったため、返される角度は以前のリリースとは符号が反転しています。古い符号に依存するスクリプトは、値を反転させるか角度計算を調整する必要があります。

コミット: 7673aaf74

移行チェックリスト#

v2.7.0 へきれいに移植するための一般的な作業は次のとおりです:

  1. set_auto_gain() を gain_db= + get_gain_db() に移植し、ValueError を処理してください(自動ゲインの再設計)。

  2. set_auto_exposure() を exposure_us= + get_exposure_us() に移植してください(自動露出の再設計)。

  3. find_displacement() を変位オブジェクトに更新し、FFT フレームサイズ定数の名称を変更してください(find_displacement の見直し)。

  4. set_auto_whitebal() を rgb_gain_db= + get_rgb_gain_db() に移植し(ホワイトバランスの再設計)、set_hmirror() / set_vflip() の戻り値のチェックをやめてください(ミラー/フリップの変更)。

  5. WINC の fw_* ツールにファームウェアパスを渡してください(WINC ツールの変更)。

  6. find_number() に 28x28 の roi を渡し(find_number の変更)、反転した z_rotation() の符号に合わせて AprilTag の角度計算を調整してください(z_rotation の変更)。

その他のスクリプトはすべて変更なしで動作します。