コンテンツにスキップ
ステージングサーバー
開発サーバー

コアコンセプト#

アクフィジションライフサイクル#

Camera → Transport → Buffer Queue → Application
                         ↑
                   RetrieveResult()

メンタルモデル#

  • カメラは非同期で動作します。
  • Pythonは同期して取得します。
  • バッファが両方のドメインを分離します。

ブロッキング動作#

処理が遅いと、バックログが発生してフレームがドロップする原因になる場合があります。適切なタイムアウト値を指定することができます。 RetrieveResult() グラブ結果を無期限に待ち続けるのを避けるためです。

RetrieveResult() → Waits until frame or timeout

GenICamノード#

GenICamノードとは何ですか?#

GenICamノードは、カメラの単一の設定可能な機能またはPropertyを表します。ノードはGenICam標準で定義されており、ハードウェアベンダーに関係なくカメラ機能にアクセスするための統一された方法を提供します。

各ノードは厳密に型付けされたパラメータのように動作し、さまざまな情報を公開します。

  • 名前(例: ExposureTime)
  • データ型(例:Float、Integer、Enumerationなど)
  • アクセス権(読み取り専用または読み取り/書き込み)
  • 有効な値の範囲またはオプション

pypylonでは、ノードはカメラオブジェクトの属性としてアクセスされ、次のようなメソッドを提供します。

exposure_time = camera.ExposureTime   # Read exposure time in microseconds.
camera.ExposureTime.Value = 3000  # Value is in microseconds. Check Increment and ValueRange for valid values.

一般的なノードタイプ#

パラメーター 例 説明
Float ExposureTime 離散的なハードウェア設定にマッピングされる連続値
Integer Width 離散値
Enumeration TriggerMode 事前定義された文字列値
Boolean AcquisitionFrameRateEnable True/False
コマンド ExecuteSoftwareTrigger アクションを実行します

pypylonにおけるすべてのカメラ設定はノードを介して行われるため、ノードを理解することは不可欠です。

pylon Parameters#

pylon parametersはGenICamノードをラップし、値の読み取りと書き込みのための拡張された一貫性のあるインターフェースを提供します。また、型変換、範囲チェック、アクセスモードの処理も行います。

ノードが見つからない場合、 pylon.PlaceholderParameter が返されるため、コードで存在しないノードを適切に処理できます。これは、異なるカメラモデルやファームウェアバージョンで利用可能な機能が異なる場合があるセットアップによく見られるシナリオです。

var = camera.NotThere.GetValueOrDefault(1)
camera.NotThere.TrySetValue(3000)

パラメーターの設定

特定のパラメータを変更するには、まず取得を停止する必要があります:

camera.StopGrabbing()
camera.Width.Value = 640
camera.StartGrabbing()