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 ブートローダーでのpydfuclear-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 を追加)。
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 へきれいに移植するための一般的な作業は次のとおりです:
set_auto_gain()をgain_db=+get_gain_db()に移植し、ValueErrorを処理してください(自動ゲインの再設計)。set_auto_exposure()をexposure_us=+get_exposure_us()に移植してください(自動露出の再設計)。find_displacement()を変位オブジェクトに更新し、FFT フレームサイズ定数の名称を変更してください(find_displacement の見直し)。set_auto_whitebal()をrgb_gain_db=+get_rgb_gain_db()に移植し(ホワイトバランスの再設計)、set_hmirror()/set_vflip()の戻り値のチェックをやめてください(ミラー/フリップの変更)。WINC の
fw_*ツールにファームウェアパスを渡してください(WINC ツールの変更)。find_number()に 28x28 のroiを渡し(find_number の変更)、反転したz_rotation()の符号に合わせて AprilTag の角度計算を調整してください(z_rotation の変更)。
その他のスクリプトはすべて変更なしで動作します。