デバイス情報へのアクセスと設定
このチュートリアルでは、Aravis APIを使用してデバイス情報を設定する方法を学びます。
必要なもの
- Aravis Python(SDKパッケージに含まれています)
- PyGObject(SDKパッケージに含まれています)
チュートリアル
前回のチュートリアルで、Aravis APIを使用してデバイス情報を取得する方法を学びました(前回のチュートリアル)。
いくつかのGenICamの機能、たとえばGainやExposureTimeは書き込み可能ですので、これらの値を変更してカメラを制御しましょう。
必要なモジュールを読み込む
モジュールの読み込みプロセスは前回のチュートリアルとまったく同じです。詳細はデバイス情報へのアクセスと表示を参照してください。
デバイスへのアクセス
デバイスへのアクセスのAPIは前回のチュートリアルとまったく同じです。詳細はデバイス情報へのアクセスと表示を参照してください。
デバイスの現在の値を取得する
最初に、Gain
とExposureTime
の現在の値を知りたいです。前回のチュートリアルで学んだように、カメラを開いた後にget_float_feature_value
を使用してカメラ情報を取得します。
for i in range(num_device):
device = Aravis.Camera.new(Aravis.get_device_id(i)).get_device()
...
current_gain = device.get_float_feature_value("Gain")
current_exposuretime = device.get_float_feature_value("ExposureTime")
...
del device
U3Vデバイスで定義された一般的なキーの例は以下の表にリストされています。
フィーチャー名 | 説明 | タイプ |
---|---|---|
Gain | 画像センサのゲイン | Double |
ExposureTime | 画像センサの露光時間 | Double |
これらのフィーチャーキーとタイプはemvaによるSFNC(標準フィーチャー命名規約)で定義されていますが、一部のデバイスには固有の機能、キー、またはタイプがあるかもしれません。すべてのアクセス可能なフィーチャを知るには、arv-tool-0.8
を使用します。詳細は利用可能なGenICam機能の一覧表示を参照してください。
一般的な名前(例):
Gain
の代わりに、GainRaw
またはGainAbs
かもしれません。ExposureTime
の代わりに、ExposureTimeBaseAbs
またはExposureTimeRaw
かもしれません。
一般的な型(例):
- もし
Gain
やExposureTime
の型がDoubleではなくIntegerの場合、get_float_feature_value
の代わりにget_integer_feature_value
かもしれません。
もしarv-device-error-quark
がエラーを返す場合:
- デバイスにキーがないかもしれません(
Not found (1)
):フィーチャキーが正しいかどうか確認してください。詳細は利用可能なGenICam機能の一覧表示を参照してください。 - タイプが間違っていた場合(
Not a ArvGcFlaot (0)
):フィーチャタイプが正しいかどうか確認してください。タイプが整数の場合、APIはget_integer_feature_value
でなければなりません。詳細は利用可能なGenICam機能の一覧表示を参照してください。
デバイスの現在の値を設定する
さて、set_float_feature_value
のAPIを使用してGainとExposureTimeの値を更新しましょう:
new_gain = current_gain + 10.0
new_exposuretime = current_exposuretime + 10.0
device.set_float_feature_value("Gain", new_gain)
device.set_float_feature_value("ExposureTime", new_exposuretime)
値が実際に更新されたかどうかを確認するには、再びデバイス情報をロードします。
current_gain = device.get_float_feature_value("Gain")
current_exposuretime = device.get_float_feature_value("ExposureTime")
クローズ
Aravisの次の関数を使用すると、メモリリークを回避するためにリソースを解放できます。
Aravis.shutdown()
Aravis Python APIの代わりに、arv-toolも使用できます。詳細はAravisのツールを参照してください。
完全なコード
このチュートリアルで使用される完全なコードはこちらです。