You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/ja/4-manufacturing/lessons/2-check-fruit-from-device/virtual-device-camera.md

7.5 KiB

画像をキャプチャする - 仮想IoTハードウェア

このレッスンでは、仮想IoTデバイスにカメラセンサーを追加し、画像を読み取る方法を学びます。

ハードウェア

仮想IoTデバイスは、ファイルからの画像またはウェブカメラからの画像を送信するシミュレートされたカメラを使用します。

CounterFitにカメラを追加する

仮想カメラを使用するには、CounterFitアプリにカメラを追加する必要があります。

タスク - CounterFitにカメラを追加する

CounterFitアプリにカメラを追加します。

  1. fruit-quality-detectorというフォルダーにapp.pyという単一のファイルを持つ新しいPythonアプリを作成し、Python仮想環境を設定して、CounterFitのpipパッケージを追加します。

    ⚠️ 必要に応じて、レッスン1でのCounterFit Pythonプロジェクトの作成と設定に関する手順を参照してください。

  2. 追加のPipパッケージをインストールして、Cameraセンサーと通信できるCounterFit shimをインストールします。このshimは、一部のPicamera Pipパッケージをシミュレートします。仮想環境が有効化されたターミナルからインストールしてください。

    pip install counterfit-shims-picamera
    
  3. CounterFitウェブアプリが実行中であることを確認します。

  4. カメラを作成します:

    1. SensorsペインのCreate sensorボックスで、Sensor typeボックスをドロップダウンし、Cameraを選択します。

    2. NamePicameraに設定します。

    3. Addボタンを選択してカメラを作成します。

    カメラ設定

    カメラが作成され、センサーリストに表示されます。

    作成されたカメラ

カメラをプログラムする

仮想IoTデバイスは、仮想カメラを使用するようにプログラムできます。

タスク - カメラをプログラムする

デバイスをプログラムします。

  1. fruit-quality-detectorアプリがVS Codeで開かれていることを確認します。

  2. app.pyファイルを開きます。

  3. CounterFitにアプリを接続するために、以下のコードをapp.pyの先頭に追加します:

    from counterfit_connection import CounterFitConnection
    CounterFitConnection.init('127.0.0.1', 5000)
    
  4. 以下のコードをapp.pyファイルに追加します:

    import io
    from counterfit_shims_picamera import PiCamera
    

    このコードは、必要なライブラリをインポートし、counterfit_shims_picameraライブラリのPiCameraクラスを含みます。

  5. カメラを初期化するために、以下のコードを追加します:

    camera = PiCamera()
    camera.resolution = (640, 480)
    camera.rotation = 0
    

    このコードは、PiCameraオブジェクトを作成し、解像度を640x480に設定します。より高い解像度もサポートされていますが、画像分類器ははるかに小さい画像227x227で動作するため、大きな画像をキャプチャして送信する必要はありません。

    camera.rotation = 0行は、画像の回転を度単位で設定します。ウェブカメラやファイルからの画像を回転させる必要がある場合は、適切に設定してください。例えば、横向きのウェブカメラで撮影したバナナの画像を縦向きに変更したい場合は、camera.rotation = 90に設定します。

  6. 画像をバイナリデータとしてキャプチャするために、以下のコードを追加します:

    image = io.BytesIO()
    camera.capture(image, 'jpeg')
    image.seek(0)
    

    このコードは、バイナリデータを格納するためのBytesIOオブジェクトを作成します。画像はカメラからJPEGファイルとして読み取られ、このオブジェクトに格納されます。このオブジェクトには、データのどこにいるかを示す位置インジケーターがあり、必要に応じてデータを末尾に書き込むことができます。そのため、image.seek(0)行は、この位置を先頭に戻し、後で全データを読み取れるようにします。

  7. 以下のコードを追加して、画像をファイルに保存します:

    with open('image.jpg', 'wb') as image_file:
        image_file.write(image.read())
    

    このコードは、image.jpgという名前のファイルを開き、BytesIOオブジェクトからすべてのデータを読み取り、それをファイルに書き込みます。

    💁 画像を直接ファイルにキャプチャすることもできます。その場合は、camera.capture呼び出しにファイル名を渡します。このレッスンの後半で画像を画像分類器に送信するために、BytesIOオブジェクトを使用しています。

  8. CounterFitでカメラがキャプチャする画像を設定します。SourceFileに設定して画像ファイルをアップロードするか、SourceWebCamに設定してウェブカメラから画像をキャプチャします。画像を選択するかウェブカメラを選択した後、Setボタンを必ず選択してください。

    CounterFitで画像ソースをファイルに設定し、ウェブカメラでバナナを持つ人を表示しているプレビュー

  9. 画像がキャプチャされ、現在のフォルダーにimage.jpgとして保存されます。このファイルはVS Codeのエクスプローラーに表示されます。ファイルを選択して画像を確認してください。回転が必要な場合は、camera.rotation = 0行を適切に更新し、再度撮影してください。

💁 このコードはcode-camera/virtual-iot-deviceフォルダーにあります。

😀 カメラプログラムが成功しました!

免責事項:
この文書は、AI翻訳サービス Co-op Translator を使用して翻訳されています。正確性を期すよう努めておりますが、自動翻訳には誤りや不正確な部分が含まれる可能性があります。元の言語で記載された原文が公式な情報源と見なされるべきです。重要な情報については、専門の人間による翻訳を推奨します。本翻訳の使用に起因する誤解や誤認について、当方は一切の責任を負いません。