v4.5.1¶
v4.5.1 では、画像の向き/アスペクト比に関する描画ヒント、ファイルパスからの画像の直接読み込み、GC2145 のワイド視野角 ioctl、新しいバックライトコントローラ API が追加されました。また、Image() コンストラクタ、display API、モジュールの引数解析が再構築されています。以下の破壊的変更をお読みください。
ハイライト¶
描画ヒント —
draw_image()に向き(HMIRROR/VFLIP/TRANSPOSE、ROTATE_90/180/270)とアスペクトスケーリング(SCALE_ASPECT_KEEP/EXPAND/IGNORE)のヒントが追加されました。ディスクからの画像読み込み —
draw_image()/display.write()がファイルパス文字列を受け付けます。バックライト制御 — 新しい
DACBacklight/PWMBacklightクラスとディスプレイのbacklight=引数。破壊的変更:
Image()コンストラクタ、displayAPI、モジュールの引数解析が変更されました — 破壊的変更を参照してください。
新機能¶
draw_image()の向きヒント —image.HMIRROR、image.VFLIP、image.TRANSPOSE、加えて便利なimage.ROTATE_90/ROTATE_180/ROTATE_270。draw_image()のアスペクトヒント — フィット/拡大/引き伸ばしのためのimage.SCALE_ASPECT_KEEP/SCALE_ASPECT_EXPAND/SCALE_ASPECT_IGNORE。パレット定数 —
image.PALETTE_RAINBOWとimage.PALETTE_IRONBOW(image モジュールに移動されました)。ワイド視野角 — 新しい
sensor.IOCTL_SET_FOV_WIDE/IOCTL_GET_FOV_WIDEioctl(GC2145 上で、最大5倍のセンサースケーリング)。ディスクからの読み込み —
draw_image()とdisplay.write()が元画像のファイルパス文字列を受け付け、ストレージから直接読み込みます。バックライトコントローラ — 新しい
DACBacklightおよびPWMBacklightクラス(displayからインポート可能)と、SPI/パラレルディスプレイのコンストラクタにおけるキーワード専用のbacklight=引数。
その他の変更と改善¶
ST7701 DSI ディスプレイドライバは独自の
st7701.pyモジュールに移動され(引き続きfrom display import *でインポート可能)、Arduino Giga にフリーズされました。lsm9ds1IMU ドライバは 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コンストラクタの引数順序を修正しました(bgr、byte_swap、triple_bufferが誤ったパラメータに適用されていました)。指定した矩形で画像を描画する際の TV シールドの画像破損と、スケーリングしたフレームを録画する際の誤った MJPEG フレーム境界を修正しました。
ネットワーク:
WINC WiFi の AP モードが、廃止された WEP 限定の制約を強制しなくなりました — オープンおよび WPA の AP モードが適切な PSK 処理で動作します。
ハードウェアとボードのサポート¶
OpenMV RT1060 — FSYNC ピンと修正された SPI4 ピン。
Arduino GIGA — QSPI の信頼性に関する回避策。ST7701 ディスプレイがフリーズされました。
Arduino Nano 33 BLE Sense —
lsm9ds1IMU ドライバがフリーズされました。
破壊的 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 コンストラクタはキーワード引数(height、pixformat、buffer=、copy_to_fb=)に再構築されました。既存の bytearray/バッファから画像を構築できるようになり、圧縮フォーマットではバッファが必須です。display.write() も再構築されました: x_scale/y_scale は float(スケール比)または int(ピクセル単位の目標サイズ)を取るようになり、別個の x_size/y_size キーワードは削除されました。WINC.connect() の最初の位置引数は essid → ssid にリネームされ、WINC WiFi のスキャン結果は (ssid_bytes, bssid_bytes, channel, rssi, security, N) に変更されました(SSID/BSSID は bytes になりました。BSSID はもはやフォーマットされた MAC 文字列ではありません)。
バックライトの範囲、スケーリング、キーワード専用引数 (behavior)¶
Display.backlight() は、0–255 ではなく 0–100 の強度(0 = オフ、100 = 最大)を取るようになり、範囲外では ValueError を発生させます。整数の x_scale/y_scale 値は、目標ピクセル寸法ではなく(float と同様に)乗算的なスケール係数として扱われるようになりました — これは fir.snapshot()/draw_ir()、tof.snapshot()/ draw_depth()、display、tv のスケーリングに影響します。sensor、fir、tof、tv、mjpeg、gif、imageio、tf、audio の各モジュールにわたる引数解析が統一され、従来は位置指定だったいくつかのオプションがキーワード専用になりました(名前、デフォルト値、動作はそれ以外は変更ありません)。
コミット: 391ec443f, 8bd25d6cd, 477312656, 08bf62a32, a4c0f20bf, 9b411a66d, 3d679f5a6, d15fc6b8d, 555e67ecd
移行チェックリスト¶
v4.5.1 へきれいに移植するための典型的な作業は次のとおりです:
Image()の構築を新しいキーワード形式に更新し、display.write()をx_size/y_sizeから切り替え、WINC.connect()のessid→ssidをリネームします(新しい bytes ベースのスキャンタプルを処理します)(コンストラクタ/display/WINC の変更)。Display.backlight()の呼び出しを 0–100 にスケール変更し、整数のx_scale/y_scaleの使用を再確認し、従来は位置指定だったモジュールオプションをキーワードとして渡します(動作の変更)。