v1.2.0

v1.2.0 は、従来の OpenMV イメージング API の大部分を構築した、基礎となる非常に大規模なリリースです。描画メソッド、バイナリ/モルフォロジー演算、キーポイントディスクリプタ(FAST/FREAK/LBP)、カラー変換image.statisticsBMP/PPM/JPEG ファイル I/O、lcdmjpeggifmlx サーマルモジュール、OV7725 カメラ、そして多数の sensor 制御を追加しています。一部のコア sensor の挙動が変更されました。下記の破壊的変更をお読みください。

ハイライト

  • 描画 APIdraw_line()draw_rectangle()draw_circle()draw_string()draw_cross()draw_keypoints()

  • バイナリ/モルフォロジーbinary()invert()and/or/xor/...erode()dilate()morph()negate()difference()

  • キーポイントmatch_descriptor()save_descriptor()load_descriptor() を備えた FAST/FREAK/LBP ディスクリプタ。

  • 新規モジュールlcdmjpeggif(カラー)、mlx サーマル。

  • OV7725 カメラのサポート、image.statistics、BMP/PPM/JPEG ファイル I/O。

  • 破壊的変更: sensor.reset()sensor.snapshot()sensor.set_pixformat() の挙動が変更されました。破壊的変更を参照してください。

新機能

  • 描画 — キーワード引数(color、thickness など)を備えた image.draw_line()draw_rectangle()draw_circle()draw_string()draw_cross()draw_keypoints() を追加しました。

  • バイナリ/モルフォロジーimage.binary()invert()and()nand()or()nor()xor()xnor()erode()dilate()morph()negate()difference()pixels()centroid()orientation_radians()orientation_degrees()、および width()height()format() を追加しました。

  • キーポイント/ディスクリプタfind_keypoints() による FAST キーポイント抽出、FREAK/LBP 向けの統一された match_descriptor() および save_descriptor()load_descriptor()、加えて横顔用の Haar/LBP カスケードを追加しました。

  • カラー/統計image.statistics とカラー変換関数(rgb_to_lablab_to_rgbrgb_to_grayscalegrayscale_to_rgb)。

  • ファイル I/O — BMP/PPM(P2/P3/P5/P6)/JPEG の読み込みと保存(グレースケール JPEG および 4:2:0 / 4:2:2 のクロマサブサンプリングを含む)。

  • モジュール — 新しい lcd(LCD シールド)、mjpeg(動画録画)、カラー gifGif.loop() 付き)、mlx サーマルカメラの各モジュールを、それぞれサンプルスクリプト付きで追加しました。

  • センサーsensor.get_id()(+ OV9650/OV2640/OV7725 の PID 定数)、sensor.set_special_effect()(SDE_* 定数)、sensor.set_image_filter()(FILTER_BW/FILTER_SKIN)、HQVGA フレームサイズ、image.set_pixel(x, y, …) を追加しました。

  • WiFi — ATWINC1500 WiFi ドライバと OpenMV 1/2 の BSP 基盤、加えて BLE のサンプルを追加しました。

その他の変更と改善

  • フレームバッファは OpenMV IDE へのストリーミング前に JPEG 圧縮されるようになりました(帯域幅を削減)。JPEG 圧縮はインプレースで行われます。OV7725 の H/V ズームにより任意のスケーリングが可能になりました。QVGA で動作する改良された(より高速な)Haar 顔検出。

バグ修正

イメージング:

  • 積分画像の計算、median() フィルタの破損、重心計算、RGB 入力に対する RGB スキン/白黒フィルタを修正し、グレースケール BMP/PPM の読み書きを高速化しました。

センサーとシステム:

  • pyb.Servo のタイマー(Servo が動作するようになりました)、HQVGA 解像度、SD カード初期化の信頼性、ソフトリセット後のストレージ再初期化、スクリプトが存在しない場合の REPL 再実行を修正しました。

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

  • OV7725 カメラセンサー。

  • LCD シールドlcd モジュール)、mlx サーマルカメラ、ATWINC1500 WiFi 基盤。

破壊的 API 変更

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

3 つの破壊的変更はすべて、コア sensor 関数の挙動の変更(API は同じで挙動が異なる)です。影響を受けるスクリプトを再確認してください。各コミットハッシュは GitHub 上の差分へリンクしています。(本リリースの大部分は v1.1→v1.2 の範囲で構築された新しい API であり、したがって追加的であって破壊的ではありません。)

sensor.reset() がデフォルト設定を適用しなくなりました (挙動)

sensor.reset() は、組み込みのデフォルト設定(pixformat/framesize/framerate/gain/contrast/brightness/saturation)を適用しなくなりました。reset() が使用可能なデフォルトを残すことに依存していたスクリプトは、reset() の後に sensor.set_pixformat()sensor.set_framesize()(およびその他の設定)を明示的に呼び出す必要があります。

コミット: d1e782df3

sensor.snapshot() がタイムアウト時に例外を送出します (挙動)

sensor.snapshot() は、センサーがタイムアウトした際に無限にハングする代わりに RuntimeError("Sensor Timeout!!") を送出するようになりました。タイムアウトを許容する必要がある場合は、snapshot()tryexcept RuntimeError で囲んでください。

コミット: e3f41d674

sensor.set_pixformat() が非対応フォーマット時に例外を送出します (挙動)

sensor.set_pixformat() は、非対応のピクセルフォーマットが渡された際に False を返す代わりに例外を送出するようになりました。False の戻り値をチェックしていたコードは、代わりに例外を捕捉する必要があります。

コミット: e0c5822c2

移行チェックリスト

v1.2.0 へのクリーンな移植では、通常の作業は次のとおりです:

  1. sensor.reset() の後に sensor.set_pixformat()sensor.set_framesize() を明示的に設定する(reset の変更)。

  2. センサーのタイムアウトを許容する必要がある場合は、sensor.snapshot()tryexcept RuntimeError で囲む(snapshot の変更)。

  3. False のチェックの代わりに sensor.set_pixformat() からの例外を捕捉する(set_pixformat の変更)。

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