v3.3.0

v3.3.0 は大規模なリリースです。新しい sensor.ioctl() インターフェースとカラーパレットによる完全な FLIR Lepton サーマルカメラ サポート、tv SPI ビデオ出力モジュール、グローバルシャッターのトリガーモード、多数の新しい image 描画・解析メソッド(gamma_corr()draw_ellipse()draw_edges()、多くのブロブプロパティ)、そして新しい ToF / モーター / linalg ライブラリを追加します。cpufreq API は再設計され、sensor.set_framesize() は例外を送出するようになりました。以下の破壊的変更をお読みください。

ハイライト

  • FLIR Lepton — 新しい sensor.ioctl() インターフェース、カラーパレット、image.to_rainbow() による完全なサーマルカメラサポート。

  • tv モジュール — SPI TV / コンポジットビデオ出力。

  • グローバルシャッターのトリガーモードsensor.ioctl() による MT9V034 のトリガーキャプチャ。

  • イメージングgamma_corr()draw_ellipse()draw_edges()draw_image() のアルファブレンディング、そして多数の新しいブロブプロパティ。

  • 新ライブラリ — VL53L1X ToF 距離、TB6612 モータードライバ、micro-linalg。

  • 破壊的変更: cpufreq API が再設計され、sensor.set_framesize() は失敗時に例外を送出するようになり、sensor.alloc_extra_fb() は Bayer/JPEG を廃止し、image.replace() の位置引数がずれました。破壊的変更を参照してください。

新機能

  • FLIR Lepton — センサー固有の制御を行う sensor.ioctl() と Lepton 用の一連の ioctl(放射測定、リフレッシュ/解像度、run-command、属性の設定/取得、FPA/AUX 温度(°C)、測定モード/レンジ、幅/高さ)、sensor.PALETTE_RAINBOW / PALETTE_IRONBOW を伴う sensor.set_color_palette() / sensor.get_color_palette()image.to_rainbow()、そして Lepton のサンプルスクリプト(27-Lepton)を追加。

  • トリガーモード — MT9V034 グローバルシャッターのトリガーキャプチャ用に IOCTL_SET_TRIGGERED_MODE / IOCTL_GET_TRIGGERED_MODE を、高 FPS およびトリガーモードのサンプルとともに追加。

  • tv モジュール — SPI TV / コンポジットビデオ出力のバインディングを追加。

  • イメージングimage.gamma_corr()image.draw_ellipse()image.draw_edges()draw_image() のアルファブレンディング、clear()mask= キーワードを追加し、mask_rectangle() / mask_circle() / mask_ellipse() を再追加、draw_string() / draw_text() の回転 / hmirror / vflip キーワード、replace()transpose キーワード(および assign / set エイリアス)、copy()x_scale / y_scale に加えて crop() / scale()、寸法から生成する Image() コンストラクタ、sensor.BINARY ピクセルフォーマット、エクスポートされた色空間変換関数、そして多数の新しいブロブプロパティ(cornersperimeterroundnesselongationextentcompactnesssolidityconvexityenclosing_circleenclosed_ellipse、回転)を追加。

  • ライブラリvl53l1x ToF 距離センサードライバ、tb6612 モータードライバ(DC モーターとステッピングモーターの Motor-Shield サンプル付き)、および micro-linalg ライブラリ(ulinalg / umatrix)を追加。

  • FatFS を FF13C(exFAT 対応)にアップグレード。

その他の変更と改善

  • デフォルトの JPEG 品質を改善(ハードコードされた値の代わりに low–high の中間値を使用)。インプレースの画像操作で第一引数として画像を繰り返す必要がなくなりました。draw_string() が整数以外のスケール値を受け付けるようになりました。

バグ修正

カメラとセンサー:

  • Lepton 3.5 の起動ハング(タイムアウト+リカバリ)とリセットの信頼性、set_pixformat() より前の MT9V034 set_framesize()(呼び出し順序が問題にならなくなりました)、STM32H7 上の MT9V034 WVGA、MT9V034 の自動露出レンジとシャドウレジスタ更新、そして H7 ADC のバグを修正。

イメージング:

  • find_apriltags() における無効なメモリアクセス、スケーリングされた画像をメインフレームバッファにコピーする際の copy()to_grayscale() / to_rgb565() のフレームバッファ確保、キーポイントオブジェクトの len()、JPEG MCU 境界の処理、binary() のしきい値リスト解析、そしてキーポイントのタプルを受け付ける draw_keypoints() を修正。

システム:

  • image / fir / lcd / tv / nn の各メソッドにまたがる fb_alloc の mark/free の不均衡によるリークを修正し、py_assert がキャッチした例外でフレームバッファメモリを解放するようにし(#417)、UART のオーバーラン(ORE)フラグをクリアしてオーバーランで UART の読み取りがスタックしないようにし、RTC IRQ ハンドラを修正し、Windows の cascade_convert.py ツールを修正しました。

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

  • FLIR Lepton サーマルカメラ。

  • TV シールド — SPI TV / コンポジットビデオ出力。

  • グローバルシャッター(MT9V034) トリガーモード。

破壊的 API 変更

v3.2.0 と v3.3.0 の間のユーザーから見える API の破壊的変更。範囲: modules/ 内の Python C モジュールと scripts/libraries/ 内の Python ライブラリ。

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

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

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

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

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

cpufreq API の再設計 (major)

cpufreq モジュールは H7 サポートのために再設計されました。cpufreq.CPUFREQ_120MHZ / 144 / 168 / 192 / 216MHZ 定数と cpufreq.get_frequency() は削除されました。cpufreq.set_frequency() はプレーンな MHz 整数を受け取るようになり(例: cpufreq.set_frequency(120))、cpufreq.get_current_frequencies() / cpufreq.get_supported_frequencies() が追加されました。

コミット: 6babf84a1

image.replace() の位置引数がずれた (minor)

image.replace()transpose 引数が追加され、位置引数 mask が 4 番目から 5 番目にずれました。mask を位置引数で渡していたコード(例: img.replace(src, hmirror, vflip, mask))は、キーワード形式 img.replace(src, mask=mask) に切り替える必要があります。

コミット: dbe7bf059

sensor.alloc_extra_fb() が Bayer/JPEG を受け付けなくなった (minor)

sensor.alloc_extra_fb()sensor.BAYERsensor.JPEG を受け付けなくなりました(代わりに sensor.BINARY もサポートするようになりました)。Bayer または JPEG 形式で追加のフレームバッファを確保していたコードは、GRAYSCALE / RGB565 を使用する(または別の方法でバッファを確保する)必要があります。

コミット: f9e6b3fe0

sensor.set_framesize() が失敗時に例外を送出する (behavior)

sensor.set_framesize() は、フレームサイズがサポートされていない場合に False を返す代わりに ValueError を送出するようになりました。False の戻り値をチェックしていたコードは、代わりに ValueError 例外をキャッチする必要があります。

コミット: b0442633e

移行チェックリスト

v3.3.0 へのクリーンな移植では、一般的に次の作業が必要です:

  1. cpufreq コードを整数 MHz の set_frequency()get_current_frequencies() / get_supported_frequencies() に移植する(cpufreq の再設計)。

  2. image.replace()mask をキーワードとして渡す(replace の変更)。

  3. 追加のフレームバッファを Bayer/JPEG ではなく GRAYSCALE / RGB565 として確保する(alloc_extra_fb の変更)。

  4. sensor.set_framesize() の周りで False をチェックする代わりに ValueError をキャッチする(set_framesize の変更)。

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