v4.5.1

v4.5.1 では、画像の向き/アスペクト比に関する描画ヒント、ファイルパスからの画像の直接読み込み、GC2145 のワイド視野角 ioctl、新しいバックライトコントローラ API が追加されました。また、Image() コンストラクタ、display API、モジュールの引数解析が再構築されています。以下の破壊的変更をお読みください。

ハイライト

  • 描画ヒントdraw_image() に向き(HMIRROR/VFLIP/TRANSPOSEROTATE_90/180/270)とアスペクトスケーリング(SCALE_ASPECT_KEEP/EXPAND/IGNORE)のヒントが追加されました。

  • ディスクからの画像読み込みdraw_image() / display.write() がファイルパス文字列を受け付けます。

  • バックライト制御 — 新しい DACBacklight / PWMBacklight クラスとディスプレイの backlight= 引数。

  • 破壊的変更: Image() コンストラクタ、display API、モジュールの引数解析が変更されました — 破壊的変更を参照してください。

新機能

  • draw_image() の向きヒント — image.HMIRRORimage.VFLIPimage.TRANSPOSE、加えて便利な image.ROTATE_90 / ROTATE_180 / ROTATE_270

  • draw_image() のアスペクトヒント — フィット/拡大/引き伸ばしのための image.SCALE_ASPECT_KEEP / SCALE_ASPECT_EXPAND / SCALE_ASPECT_IGNORE

  • パレット定数image.PALETTE_RAINBOWimage.PALETTE_IRONBOW(image モジュールに移動されました)。

  • ワイド視野角 — 新しい sensor.IOCTL_SET_FOV_WIDE / IOCTL_GET_FOV_WIDE ioctl(GC2145 上で、最大5倍のセンサースケーリング)。

  • ディスクからの読み込みdraw_image()display.write() が元画像のファイルパス文字列を受け付け、ストレージから直接読み込みます。

  • バックライトコントローラ — 新しい DACBacklight および PWMBacklight クラス(display からインポート可能)と、SPI/パラレルディスプレイのコンストラクタにおけるキーワード専用の backlight= 引数。

その他の変更と改善

  • ST7701 DSI ディスプレイドライバは独自の st7701.py モジュールに移動され(引き続き from display import * でインポート可能)、Arduino Giga にフリーズされました。lsm9ds1 IMU ドライバは Arduino Nano 33 BLE Sense にフリーズされました。

  • MT9V022 / MT9V034(グローバルシャッター)カメラが、画質向上のために行ノイズ補正を適用するようになりました。

  • i.MX RT の USB マスストレージボリュームが OpenMV ディスクとしてラベル付けされるようになりました。

バグ修正

カメラとセンサー:

  • 480行を超える高さの画像でのコーナー検出(find_keypoints() の FAST/AGAST)を修正しました — 行単位のバッファが画像の高さに合わせてサイズ設定されるようになりました。

  • i.MX RT(OpenMV RT1060)でフレーム同期した snapshot() のための FSYNC ピンサポートを追加し、RT1060 上で入れ替わっていた SPI4 MOSI/MISO ピンを修正しました。

ディスプレイと映像:

  • SPIDisplay コンストラクタの引数順序を修正しました(bgrbyte_swaptriple_buffer が誤ったパラメータに適用されていました)。

  • 指定した矩形で画像を描画する際の TV シールドの画像破損と、スケーリングしたフレームを録画する際の誤った MJPEG フレーム境界を修正しました。

ネットワーク:

  • WINC WiFi の AP モードが、廃止された WEP 限定の制約を強制しなくなりました — オープンおよび WPA の AP モードが適切な PSK 処理で動作します。

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

  • OpenMV RT1060 — FSYNC ピンと修正された SPI4 ピン。

  • Arduino GIGA — QSPI の信頼性に関する回避策。ST7701 ディスプレイがフリーズされました。

  • Arduino Nano 33 BLE Senselsm9ds1 IMU ドライバがフリーズされました。

破壊的 API 変更

v4.5.0 から v4.5.1 にかけての、ユーザーに見える API の破壊的変更です。対象範囲: modules/ 内の Python C モジュールと scripts/libraries/ 内の Python ライブラリ。

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

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

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

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

Image() コンストラクタと display API (minor)

image.Image コンストラクタはキーワード引数(heightpixformatbuffer=copy_to_fb=)に再構築されました。既存の bytearray/バッファから画像を構築できるようになり、圧縮フォーマットではバッファが必須です。display.write() も再構築されました: x_scale/y_scale は float(スケール比)または int(ピクセル単位の目標サイズ)を取るようになり、別個の x_size/y_size キーワードは削除されました。WINC.connect() の最初の位置引数は essidssid にリネームされ、WINC WiFi のスキャン結果は (ssid_bytes, bssid_bytes, channel, rssi, security, N) に変更されました(SSID/BSSID は bytes になりました。BSSID はもはやフォーマットされた MAC 文字列ではありません)。

コミット: 6752c95ac, 161737092, 8178c237c, b6cdf8de1

バックライトの範囲、スケーリング、キーワード専用引数 (behavior)

Display.backlight() は、0–255 ではなく 0–100 の強度(0 = オフ、100 = 最大)を取るようになり、範囲外では ValueError を発生させます。整数の x_scale/y_scale 値は、目標ピクセル寸法ではなく(float と同様に)乗算的なスケール係数として扱われるようになりました — これは fir.snapshot()/draw_ir()tof.snapshot()/ draw_depth()displaytv のスケーリングに影響します。sensorfirtoftvmjpeggifimageiotfaudio の各モジュールにわたる引数解析が統一され、従来は位置指定だったいくつかのオプションがキーワード専用になりました(名前、デフォルト値、動作はそれ以外は変更ありません)。

コミット: 391ec443f, 8bd25d6cd, 477312656, 08bf62a32, a4c0f20bf, 9b411a66d, 3d679f5a6, d15fc6b8d, 555e67ecd

移行チェックリスト

v4.5.1 へきれいに移植するための典型的な作業は次のとおりです:

  1. Image() の構築を新しいキーワード形式に更新し、display.write()x_size/y_size から切り替え、WINC.connect()essidssid をリネームします(新しい bytes ベースのスキャンタプルを処理します)(コンストラクタ/display/WINC の変更)。

  2. Display.backlight() の呼び出しを 0–100 にスケール変更し、整数の x_scale/y_scale の使用を再確認し、従来は位置指定だったモジュールオプションをキーワードとして渡します(動作の変更)。