v2.7.0

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

ハイライト

  • 最新のセンサー APIset_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() を追加しました。

  • SSIMimage.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 の hmirrorvflip サポート、追加の 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.pystop_mode.py、高度なオプティカルフロー、線形/対数極座標のサンプルスクリプトを追加しました。ファームウェアは起動時に uart.ini を解析して REPL UART を有効にするようになりました。

その他の変更と改善

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

バグ修正

イメージング:

  • find_template() のダイヤモンドサーチの範囲外バグ、logpolarlinpolar の破損、およびゼロに近いカラー値で 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= キーワードを受け付けなくなり、TrueFalse も返さなくなりました。sensor.set_auto_gain(False, gain_db=...)(浮動小数点の dB 値)を使用し、新しい sensor.get_gain_db() で読み戻してください。失敗時には ValueError が発生するようになったため、呼び出しを tryexcept で囲んでください。

コミット: b906c5f19

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

sensor.set_auto_exposure() は整数の value= キーワードを受け付けなくなり、TrueFalse も返さなくなりました。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_offsety_offset — に加えて rotation()scale() と新しい logpolarfix_rotation_scale キーワードを持つ)を返すようになりました。別個の rot-scale オブジェクトは削除され、find_rotscale() が追加されました。FFT フレームサイズ定数は名称変更/削除されました: sensor.B40x30 は完全に削除され、sensor.B64x32B64x64 は大文字の sensor.B64X32B64X64 に名称変更されました(新たに B128X64B128X128 を追加)。

コミット: c78f91b42, 213396d09

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

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

コミット: 30ecbdc4f

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

sensor.set_hmirror()sensor.set_vflip() は、TrueFalse のステータスを返す代わりに 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 の変更)。

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