v1.1.0

v1.1.0 は基盤となるアーキテクチャのリリースです。初期のカスタムペリフェラルモジュールを廃止して標準の MicroPython 組み込み を採用し、イメージング API を image モジュールに、フレームレートクロックを time に移動し、組み込み Haar カスケード、get_pixel() / set_pixel()、OpenMV 2 ボードサポート、USB-CDC デバッグを追加します。互換性を大きく壊す、API を定義するリリースです — 下記の互換性に影響する変更をお読みください。

ハイライト

  • MicroPython 組み込み — カスタムの gpio / led / spi / socket / wlan / uart / file / select モジュールは削除され、MicroPython の pyb / machine が採用されました。

  • image モジュール — Image() / HaarCascade() / ディスクリプタは image モジュールに移動しました。

  • time.clock — フレームレートクロックは time モジュールに移動しました。

  • 組み込み Haar カスケードHaarCascade("frontalface") / HaarCascade("eye")(ファイル不要)。

  • OpenMV 2 ボードサポートと USB-CDC デバッグ。

  • 互換性に影響: モジュール構造が再定義されました — 互換性に影響する変更を参照してください。

新機能

  • ImageImage.get_pixel(x, y) / set_pixel()img[i] の添字によるピクセルアクセスを追加。組み込みのフラッシュ Haar カスケード(HaarCascade("frontalface") / HaarCascade("eye"))とカスケードのステージ数を制限する stages= キーワードを追加。draw_string() がグレースケール画像でも動作。

  • Sensorsensor.set_colorbar()sensor.set_saturation()QQVGA2 フレームサイズを追加。

  • mlxmlx.RAINBOW / mlx.GRAYSCALE 出力を持つ mlx.read(type)

  • デバッグ — USB CDC 経由のデバッグ、ファームウェアの fw_version() クエリ、ボードごとのファームウェア(OpenMV 1 / OpenMV 2)、セルフテスト/カラーバースクリプトを実装。致命的/パースエラーはフラッシュにログ記録されます。

その他の変更と改善

  • メモリ不足時に OSError ではなく MemoryError を送出するようになりました。スクリプトは例外を再送出して実行されるため、クラッシュせずにエラーが表示されます。シリアルボーレートが設定可能(デフォルト 921600)。フラッシュファイルシステムが拡大。キャプチャ安定性のためにセンサーのピクセルクロックを 54 MHz に下げました。sensor.reset() はセンサーのソフトリセットのみに依存します。

バグ修正

  • テンプレートマッチング、最初の物体を繰り返す find_features()、SCCB/I2C のアトミックなレジスタアクセス、SD カードのチップ検出、ソフト I2C のピンマッピング、fast_cbrtf / LAB カラー精度、OpenMV 1 / 2 での積分画像/メディアンフィルタのメモリ使用量を修正しました。

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

  • OpenMV 2(STM32F427)ボードサポート(および OpenMV 3 のハードウェア設計)。OpenMV 2 ではセンサークロックとして MCO を使用。

互換性に影響する API 変更

v1.0.3-beta から v1.1.0 にかけて、ユーザーから見える API の破壊的変更があります。範囲: modules/ 内の Python C モジュールと scripts/libraries/ 内の Python ライブラリ。

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

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

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

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

カスタムペリフェラルモジュールの削除 (major)

初期のカスタム clock / file / gpio / led / select / socket / spi / wlan / uart モジュールは削除され、MicroPython 組み込みの pyb / machine ペリフェラルが採用されました。スクリプトを標準の MicroPython 相当(例: pyb.Pin / pyb.LED / pyb.SPI / pyb.UART)に移植してください。

コミット: 6d2fafa94

イメージング API を image モジュールに移動 (major)

Image()HaarCascade()、ディスクリプタの保存/読み込み関数は、もはや素のビルトインではなくなり、新しい image モジュールに置かれます。スクリプトは import image を行い、image.Image / image.HaarCascade() を使用する必要があります。

コミット: 54288c535

フレームレートクロックを time に移動 (major)

スタンドアロンの clock モジュールは削除され、フレームレートクロックは time に置かれるようになりました。import timeclock = time.clock() を使用してください — 返されるオブジェクトは引き続き .tick() / .fps() / .avg() / .reset() を提供します。

コミット: a8928ca3b

/flash/sdsys.path に追加しなくなりました (behavior)

ボリュームラベル/ルートディレクトリが修正され、/flash/sdsys.path に自動追加されなくなりました。これらの場所から素の名前でヘルパーモジュールをインポートしていたスクリプトは、明示的にパスを追加する(あるいはモジュールを見つかる場所に配置する)必要があります。

コミット: 09e77b5da

移行チェックリスト

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

  1. カスタムの gpio / led / spi / uart / socket / wlan / file / select モジュールを MicroPython の pyb / machine に置き換える(カスタムモジュールの削除)。

  2. import image を行い、Image() / HaarCascade()image. を付ける(image モジュールへの移動)。

  3. import timeclock = time.clock() を使用する(clock の移動)。

  4. 素の名前でヘルパーモジュールをインポートしていた場合は、/flash / /sdsys.path に明示的に追加する(sys.path の変更)。

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