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。
破壊的変更:
cpufreqAPI が再設計され、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ピクセルフォーマット、エクスポートされた色空間変換関数、そして多数の新しいブロブプロパティ(corners、perimeter、roundness、elongation、extent、compactness、solidity、convexity、enclosing_circle、enclosed_ellipse、回転)を追加。ライブラリ —
vl53l1xToF 距離センサードライバ、tb6612モータードライバ(DC モーターとステッピングモーターの Motor-Shield サンプル付き)、および micro-linalg ライブラリ(ulinalg/umatrix)を追加。FatFS を FF13C(exFAT 対応)にアップグレード。
その他の変更と改善¶
デフォルトの JPEG 品質を改善(ハードコードされた値の代わりに low–high の中間値を使用)。インプレースの画像操作で第一引数として画像を繰り返す必要がなくなりました。
draw_string()が整数以外のスケール値を受け付けるようになりました。
バグ修正¶
カメラとセンサー:
Lepton 3.5 の起動ハング(タイムアウト+リカバリ)とリセットの信頼性、
set_pixformat()より前の MT9V034set_framesize()(呼び出し順序が問題にならなくなりました)、STM32H7 上の MT9V034 WVGA、MT9V034 の自動露出レンジとシャドウレジスタ更新、そして H7 ADC のバグを修正。
イメージング:
find_apriltags()における無効なメモリアクセス、スケーリングされた画像をメインフレームバッファにコピーする際のcopy()、to_grayscale()/to_rgb565()のフレームバッファ確保、キーポイントオブジェクトのlen()、JPEG MCU 境界の処理、binary()のしきい値リスト解析、そしてキーポイントのタプルを受け付けるdraw_keypoints()を修正。
システム:
ハードウェアとボードサポート¶
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.BAYER や sensor.JPEG を受け付けなくなりました(代わりに sensor.BINARY もサポートするようになりました)。Bayer または JPEG 形式で追加のフレームバッファを確保していたコードは、GRAYSCALE / RGB565 を使用する(または別の方法でバッファを確保する)必要があります。
コミット: f9e6b3fe0
sensor.set_framesize() が失敗時に例外を送出する (behavior)¶
sensor.set_framesize() は、フレームサイズがサポートされていない場合に False を返す代わりに ValueError を送出するようになりました。False の戻り値をチェックしていたコードは、代わりに ValueError 例外をキャッチする必要があります。
コミット: b0442633e
移行チェックリスト¶
v3.3.0 へのクリーンな移植では、一般的に次の作業が必要です:
cpufreqコードを整数 MHz のset_frequency()とget_current_frequencies()/get_supported_frequencies()に移植する(cpufreq の再設計)。image.replace()にmaskをキーワードとして渡す(replace の変更)。追加のフレームバッファを Bayer/JPEG ではなく
GRAYSCALE/RGB565として確保する(alloc_extra_fb の変更)。sensor.set_framesize()の周りでFalseをチェックする代わりにValueErrorをキャッチする(set_framesize の変更)。
その他のすべてのスクリプトは変更なしで動作します。