v1.2.0¶
v1.2.0 は、従来の OpenMV イメージング API の大部分を構築した、基礎となる非常に大規模なリリースです。描画メソッド、バイナリ/モルフォロジー演算、キーポイントディスクリプタ(FAST/FREAK/LBP)、カラー変換と image.statistics、BMP/PPM/JPEG ファイル I/O、lcd、mjpeg、gif、mlx サーマルモジュール、OV7725 カメラ、そして多数の sensor 制御を追加しています。一部のコア sensor の挙動が変更されました。下記の破壊的変更をお読みください。
ハイライト¶
描画 API —
draw_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 ディスクリプタ。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_lab/lab_to_rgb/rgb_to_grayscale/grayscale_to_rgb)。ファイル I/O — BMP/PPM(P2/P3/P5/P6)/JPEG の読み込みと保存(グレースケール JPEG および 4:2:0 / 4:2:2 のクロマサブサンプリングを含む)。
モジュール — 新しい
lcd(LCD シールド)、mjpeg(動画録画)、カラーgif(Gif.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() を try / except RuntimeError で囲んでください。
コミット: e3f41d674
sensor.set_pixformat() が非対応フォーマット時に例外を送出します (挙動)¶
sensor.set_pixformat() は、非対応のピクセルフォーマットが渡された際に False を返す代わりに例外を送出するようになりました。False の戻り値をチェックしていたコードは、代わりに例外を捕捉する必要があります。
コミット: e0c5822c2
移行チェックリスト¶
v1.2.0 へのクリーンな移植では、通常の作業は次のとおりです:
sensor.reset()の後にsensor.set_pixformat()/sensor.set_framesize()を明示的に設定する(reset の変更)。センサーのタイムアウトを許容する必要がある場合は、
sensor.snapshot()をtry/except RuntimeErrorで囲む(snapshot の変更)。Falseのチェックの代わりにsensor.set_pixformat()からの例外を捕捉する(set_pixformat の変更)。
その他のスクリプトはすべて変更なしで動作します。