v2.6.0¶
v2.6.0 ではコアを MicroPython 1.9.2 に更新し、find_line_segments() を LSD アルゴリズムへ切り替え、MT9V034 グローバルシャッターセンサーのサポート、image.rotation_corr() による透視補正、sensor.sleep()、RAW 画像の保存、OpenMV 4 ボードの基盤整備を追加しました。find_line_segments()、いくつかのフレームサイズ、および MicroPython の動作が変更されています。以下の互換性のない変更点をお読みください。
ハイライト¶
MicroPython 1.9.2 コアの更新。
LSD 線分 —
find_line_segments()が Line Segment Detector アルゴリズムを使用するようになりました。MT9V034 グローバルシャッターセンサーのサポート。
image.rotation_corr()— X/Y/Z の透視回転補正。sensor.sleep()のソフトスリープモードと RAW(非圧縮)画像の保存。互換性に関する注意:
find_line_segments()のパラメータ、いくつかのフレームサイズ定数、および MicroPython の動作が変更されました。互換性のない変更点を参照してください。
新機能¶
image.rotation_corr()— X/Y/Z の透視回転補正を追加し、rotation_correction.pyの例を用意しました。sensor.sleep(enable)— カメラをソフトスリープモードにします(スリープモードの例付き)。RAW 画像 —
image.save()で RAW(非圧縮)画像を書き出せるようになりました。MT9V034 — グローバルシャッターセンサーのサポートを追加し、
sensor.MT9V034定数を公開しました。image.lens_corr()用のlens_correction.pyの例と、OpenMV 4 ボードのサポートファイル(ボード設定/ブートローダー/リンカの基盤整備)を追加しました。
その他の変更と改善¶
同梱の MicroPython を 1.9.2 に更新し(1.9 ポートの配管、oofatfs)、新しい LSD API 向けに
find_line_segments.pyを書き直し(レンズ補正はデフォルトでオフ)、ホスト側のopenmvAPI(init(portname)/exec_script/stop_script)を更新し、OpenMV Cam M4 のセンサークロックを下げ(M4 での最大 FPS が低下)、IDE の Stop ボタンがハードな強制例外を使ってスクリプトをより確実に中断するようにしました。
バグ修正¶
image.lens_corr()が古いピクセルを残してしまう問題(リマッピング前に出力先バッファをクリアするように変更)、blob.density()が整数除算を使用していた問題(常に 0 を返していた、#268)、OpenMV 2(M4)の UART ピンマッピングを修正し、qrcodes_with_lens_corr.pyを QVGA を使うように更新しました。
ハードウェアとボードのサポート¶
MT9V034 グローバルシャッターセンサー。
OpenMV 4 — ボードサポートファイル(基盤整備)。
OpenMV 2(M4) — UART ピンマッピングの修正。
互換性のない API 変更¶
v2.5.0 と v2.6.0 の間でユーザーから見える API の互換性のない変更点です。対象範囲: modules/ 内の Python C モジュールと scripts/libraries/ 内の Python ライブラリ。
各変更には影響度のタグが付いています:
major — その機能を使っていたほとんどのスクリプトに影響します。コードの移植が必要です。
minor — 限定的な API です。それを使っていたスクリプトにのみ影響します。
behavior — API は同じですが結果が異なります。調整済みのスクリプトを再確認してください。
変更はこの順序で影響度ごとにグループ化されています。コードを移植したいだけであれば、末尾の 移行チェックリスト に進んでください。各コミットハッシュは GitHub 上の差分にリンクしています。
find_line_segments() が LSD に切り替わりました (major)¶
image.find_line_segments() は Line Segment Detector(LSD)アルゴリズムを使うように書き直されました。従来の threshold / theta_margin / rho_margin / segment_threshold / x_stride / y_stride パラメータは merge_distance と max_theta_diff に置き換えられました(例: find_line_segments(merge_distance=0, max_theta_diff=15))。また、M4 クラス(OpenMV 2)のボードでは利用できなくなりました。
無効なフレームサイズ定数の削除 (minor)¶
無効な sensor.QQQQCIF / QQQCIF / QQQQSIF / QQQSIF / HQQQQVGA / HVGA フレームサイズ定数が削除されました(#261)。これらを使用しているスクリプトは、サポートされている解像度に切り替える必要があります。
コミット: 35ab0a26f
OpenMV Cam M4 で find_qrcodes() が削除されました (minor)¶
image.find_qrcodes() は M4 クラス(OpenMV 2)のボードではコンパイルされなくなりました。M4 ハードウェアでの QR 検出には、OpenMV 3(M7)ボードを使用するか、別のコード機能を使用してください。他のボードには影響しません。
コミット: 7dff089e6
MicroPython が 1.9.2 に更新されました (behavior)¶
同梱の MicroPython コアが 1.9.2 に更新されました。標準ライブラリと言語の動作は上流の MicroPython 1.9.2 に従います。バージョン固有の動作に依存するスクリプトを再確認してください。特に、ステップが 1 以外の画像スライスは NotImplementedError ではなく OSError を発生させるようになりました。
コミット: 11bed4b99
移行チェックリスト¶
v2.6.0 へきれいに移植するための一般的な作業は次のとおりです:
find_line_segments()の呼び出しを LSD パラメータ(merge_distance/max_theta_diff)向けに書き換え、その処理を M4 から移動してください(LSD の再設計)。削除されたフレームサイズ定数を、サポートされている解像度に置き換えてください(フレームサイズの削除)。
M4 の QR コード検出を M7 ボードに移してください(find_qrcodes の変更)。
バージョン固有の動作を MicroPython 1.9.2 に対して再検証してください(MicroPython のバージョンアップ)。
その他のスクリプトはすべて変更なしで動作します。