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

デバイス情報へのアクセスと設定

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

必要なもの

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

チュートリアル

前回のチュートリアルで、Aravis APIを使用してデバイス情報を取得する方法を学びました(前回のチュートリアル)。

いくつかのGenICamの機能、たとえばGainExposureTimeは書き込み可能ですので、これらの値を変更してカメラを制御しましょう。

必要なモジュールを読み込む

モジュールの読み込みプロセスは前回のチュートリアルとまったく同じです。詳細はデバイス情報へのアクセスと表示を参照してください。

デバイスへのアクセス

デバイスへのアクセスのAPIは前回のチュートリアルとまったく同じです。詳細はデバイス情報へのアクセスと表示を参照してください。

デバイスの現在の値を取得する

最初に、GainExposureTimeの現在の値を知りたいです。前回のチュートリアルで学んだように、カメラを開いた後に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かもしれません。

一般的な型(例):

  • もしGainExposureTimeの型が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のツールを参照してください。

完全なコード

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