デバイスプロパティへのアクセス

このセクションでは、コンポーネント(通常はビデオキャプチャデバイス)のプロパティを問い合わせ、読み取り、変更する方法について説明します。

プロパティマップ

プロパティには PropertyMap を通してアクセスします。例えば、グラバーで開いたビデオキャプチャデバイスのデバイスプロパティマップを取得するにはGrabber.device_property_map を使用します。プロパティマップオブジェクトは、ドライバ設定(Grabber.driver_property_map)、インターフェース(Interface.property_map)、およびコーデック設定(VideoWriter.property_map)にも用意されています。

プロパティ識別子

各プロパティは、たとえば ExposureTimeGain のような文字列識別子で識別されます。 多くのプロパティ識別子は GenICam Standard Feature Naming Convention(SFNC)により定義されていますが、デバイス独自のプロパティが追加されている場合もあります。

一般的なプロパティ識別子は PropId 列挙に定義されています。

プロパティオブジェクト

各プロパティは、表示名、説明、タイプ、可視性およびアクセス性の情報を持ちます。 表示名はユーザーインターフェースでプロパティのわかりやすい名称として使用され、説明にはプロパティの意味や使用方法などの追加情報を記述できます。

PropertyMap.set_value() のように、既知のタイプと値を使ってプロパティ値を素早く設定できる関数も用意されています。

詳細なプロパティ情報や設定は、オブジェクト指向インターフェースを通じて行います。プロパティオブジェクトのインスタンスを取得するには、プロパティ識別子を指定してPropertyMap.find()または関連関数を呼び出します。

プロパティオブジェクトでは、以下のような一般的な属性を問い合わせることができます。

特殊化されたプロパティタイプ

プロパティタイプごとに、取得できる追加情報や操作方法が異なります。

Integerプロパティ

Integerプロパティは、読み出すイメージセンサーの ROI の PropId.WIDTHPropId.HEIGHT のように、整数値で表される設定に使用されます。

IntegerプロパティにはPropInteger.minimumPropInteger.maximum の値と、有効値の間隔を示す PropInteger.incrementが定義されています。

さらに、PropInteger.unit や表示ヒントといった追加属性が定義される場合もあります。

Integerプロパティは PropInteger クラスのインスタンスとして表されます。

Floatプロパティ

これらは浮動小数点数で表される設定(例えば PropId.EXPOSURE_TIMEPropId.ACQUISITION_FRAME_RATE)を構成するために使用されます。

Floatプロパティには、PropFloat.minimumPropFloat.maximum の値が定義されており、さらに必要に応じて有効値の間隔を示す PropFloat.increment が設定される場合があります。

また、PropFloat.unit といった追加属性や表示ヒントが定義されることもあります。

Floatプロパティは、PropFloat クラスのインスタンスとして表されます。

Commandプロパティ

Commandプロパティは、デバイスが実行できるアクションを表します。例えば、PropId.TRIGGER_SOFTWARE などです。

コマンドは実行でき、その完了状態を問い合わせることもできます。

Commandプロパティは、PropCommand クラスのインスタンスとして表されます。

Booleanプロパティ

Booleanプロパティは、単純なオン/オフの切り替えスイッチです。

Booleanプロパティは PropBooolean クラスのインスタンスとして表されます。

Enumerationプロパティ

Enumerationプロパティは、文字列で識別された有効な値のセットから選択するためのプロパティです。

これらは PixelFormat のようなカメラ設定を構成する際に使用されます。

列挙エントリには整数値も関連付けられていますが、その数値が意味をもつとは限らず、使用には注意が必要です。

Enumerationプロパティは、PropEnumeration クラスのインスタンスとして表されます。

Stringプロパティ

Stringプロパティは、主にテキスト形式でデバイス情報を提供するために使用されます。

Stringプロパティは、PropString クラスのインスタンスとして表されます。

Registerプロパティ

Registerプロパティは、固定長の生バイトデータ配列を表します。

Registerプロパティは PropRegister クラスのインスタンスとして表されます。

Categoryプロパティ

Categoryプロパティは、他のプロパティへのリンクを含む特別なプロパティです。

この仕組みにより、Root カテゴリを起点とするプロパティのツリー構造が形成されます。このツリー構造はユーザーインターフェースの構造化に利用できます。

Categoryプロパティは、PropCategoryクラスのインスタンスとして表されます。