1. クイックスタート

OpenMV Cam

ようこそ。Python をデバイス上で直接実行する小型のプログラマブルカメラ、OpenMV Cam をご紹介できることを嬉しく思います。数行のコードを書いて実行を押すと、カメラはものを見始めます。顔の検出、色の追跡、タグの読み取り、ラインの追従などを、ループの中に PC を挟むことなく、また面倒な事前セットアップに悩まされることもなく行えます。

このクイックスタートガイドを使えば、数分で動かし始められます。IDE をインストールし、カメラを接続し、初めてのスクリプトとしてライブの顔検出器を実行します。

1.1. OpenMV IDE をインストールする

OpenMV IDE は、スクリプトを書き、カメラ上で実行し、その結果をライブで確認するためのデスクトップアプリケーションです。Windows、macOS、Linux 向けに こちら からダウンロードしてインストールしてください。

  • Windows -- インストーラーを実行します。IDE とカメラの USB ドライバが一緒にインストールされます。デフォルトのプロンプトに従ってください。

  • macOS -- .dmg を開き、OpenMV IDE を Applications フォルダにドラッグします。

  • Linux -- chmod +x openmv-ide-*.run && ./openmv-ide-*.run を実行し、インストーラーのプロンプトに従ってください。

注釈

自動化された環境やヘッドレスなセットアップでは、インストーラーはサイレントインストール用のフラグを付けてコマンドラインから実行することもできます。プラットフォームごとの正確なコマンドについては、openmv-ide README を参照してください。

1.2. カメラを接続する

USB データケーブルでカメラをコンピュータに接続します。そのドライブがマウントされ、青色の LED が点滅し始めるのを待ってから、接続ボタン(ツールバー下部にあるプラグのアイコン)をクリックします。

初めて接続するとき、IDE はカメラのファームウェアを同梱しているバージョンと比較し、更新を提案します。プロンプトを承諾して最新のファームウェアをフラッシュしてください。数秒で完了し、終わると IDE は自動的に再接続します。

カメラが表示されない場合や、接続および更新が何を行うのか詳しく知りたい場合は、カメラの接続ファームウェアの更新と復旧 を参照してください。

注釈

何かで行き詰まっていますか?OpenMV フォーラム に投稿してください。コミュニティと OpenMV チームが喜んでお手伝いします。

1.3. 初めてのスクリプトを実行する

お使いの OpenMV Cam には、Google の MediaPipe BlazeFace 顔検出器がフラッシュ上に同梱されています。次のスクリプトをエディタに貼り付けてください。

import csi
import time
import ml
from ml.postprocessing.mediapipe import BlazeFace

# Set up the camera sensor.
csi0 = csi.CSI()
csi0.reset()                # Initialize the sensor to a known state.
csi0.pixformat(csi.RGB565)  # Capture 16-bit colour.
csi0.framesize(csi.QVGA)    # Set a small, fast frame size.

# BlazeFace was trained on square images, so crop to a centred
# square the size of the sensor's height.
side = csi0.height()
csi0.window((side, side))

# Load the built-in face detector. The post-processor turns the
# network's raw output into a list of detections; threshold sets how
# confident a detection must be to count.
model = ml.Model("/rom/blazeface_front_128.tflite",
                 postprocess=BlazeFace(threshold=0.4))

clock = time.clock()        # For measuring the frame rate.
while True:
    clock.tick()
    img = csi0.snapshot()   # Capture one frame.

    # predict() runs the network and returns one
    # ((x, y, w, h), score, keypoints) tuple per detected face.
    for rect, score, keypoints in model.predict([img]):
        # Draw the box around the face...
        ml.utils.draw_predictions(img, [rect], ("face",),
                                  ((0, 0, 255),), format=None)
        # ...and mark the six landmarks: eyes, nose, mouth, ears.
        ml.utils.draw_keypoints(img, keypoints, color=(255, 0, 0))

    print(clock.fps(), "fps")

緑色の Run ボタンを押し、カメラを顔に向けてください。フレームバッファビューアが各顔の周りにボックスを描画し、目、鼻、口、耳をマークし、その間シリアルターミナルにはフレームレートが出力されます。

このスクリプト、そしてカメラが持つほぼすべての機能に対応するスクリプトは、File → Examples の下にも IDE 内に組み込まれており、接続中のボードに合わせて絞り込まれています。どれか一つを開いて実行を押し、カメラに何ができるかを探検し始めましょう。

1.4. 次にどこへ進むか

どこから入っていくかは、すでに何を知っているかによって決まります。このチュートリアルには、Python が初めての人、ハードウェアが初めての人、マシンビジョンの準備ができている人という3つの出発点があるので、自分に合ったものを選んでください。リファレンスと IDE ガイドは、必要なときにいつでもここにあります。