メインコンテンツまでスキップ
バージョン: v24.01

デバイス情報へのアクセスと表示

このチュートリアルでは、Aravis APIを使用してデバイス情報を取得する方法について学びます。

前提条件

  • Aravis Python(SDKパッケージに含まれています)
  • PyGObject(SDKパッケージに含まれています)

チュートリアル

必要なモジュールをロード

Aravisモジュールを使用するために、まず$SENSING_DEV_ROOT/bin(Sensing-Dev SDKをインストールし た場所)を追加する必要があります。

import os
os.add_dll_directory(os.path.join(os.environ["SENSING_DEV_ROOT"], "bin"))

これで、PyGObjectを使用してAravisモジュールをインポートします。

import gi
gi.require_version("Aravis", "0.8")
from gi.repository import Aravis
注意

ImportError: DLL load failed while importing _gi: The specified module could not be found.が 表示される場合

  • 環境変数 SENSING_DEV_ROOT が適切に設定されていません。
  • Pythonのバージョンが3.11ではありません。

デバイスへのアクセス

これでAravis APIを使用する準備が整いました。まず、ホストマシンに接続されているU3Vデバイスのリス トを更新します。

Aravis.update_device_list()

リストを更新することで、以下のAPIがデバイスの数を返すはずです。

num_device = Aravis.get_n_devices()
注意

num_devices0 の場合、デバイスには以下の問題がある可能性があります。

デバイス情報へのアクセス

num_device のデバイスのうち、 i 番目のデバイスにアクセスしてカメラオブジェクトを作成します 。

get_*_feature_value のAPIを使用してデバイス情報の文字列/整数/浮動小数点数の値を取得できます。

for i in range(num_device):
device = Aravis.Camera.new(Aravis.get_device_id(i)).get_device()

devicemodelname = device.get_string_feature_value("DeviceModelName")
width = device.get_integer_feature_value("Width")
...
del device

一般的なU3Vデバイスで定義された一部のキーの例は、以下の表にリストされています。

フィーチャ名説明タイプ
DeviceModelNameデバイスの名前文字列
Widthセンサイメージの幅整数
Heightセンサイメージの高さ整数
PayloadSizeセンサから転送されるデータのサイズ整数
PixelFormatセンサイメージデータのピクセルフォーマット文字列
ヒント

これらのフィーチャキーとタイプはemvaによるSFNC(Standard Features Naming Convention)で定義 されていますが、一部のデバイスは独自のフィーチャやキーを持っている場合があります。すべてのアクセス可能なフィーチャを知るには、arv-tool-0.8を使用します。詳細は利用可能なGenICam機能のリストを参照してください。

注意

arv-device-error-quark がエラーを返す場合:

値の表示

    print("=== device {} information ===========================".format(i))
print("{0:20s} : {1}".format("Device Model Name", devicemodelname))
print("{0:20s} : {1}".format("Width", width))

すべてのget_*_feature_valueの戻り値は文字列です。

クローズ

Aravisの以下の関数を使用すると、メモリリークを防ぐためにリソースが解放されます。

Aravis.shutdown()
ヒント

Aravis Python APIの代わりに、arv-toolを使用することもできます。詳細はAravisのツールを参照してください。

完全なコード

このチュートリアルで使用される完全なコードはこちらです。