pypylonにおける撮像は以下のような流れで行われます。
pylon.InstantCamera.StartGrabbing()
:画像の取得を開始します。
pylon.InstantCamera.RetrieveResult()
:ストラテジー(手順)に従って撮像結果を取得します。
pylon.InstantCamera.StopGrabbing()
:画像の取得を停止します。
以下は例です。
def grab(self, timeout=1000):
・・・
self.camera.StartGrabbing(pylon.GrabStrategy_LatestImageOnly)
grabResult = self.camera.RetrieveResult(timeout, pylon.TimeoutHandling_ThrowException)
・・・
self.camera.StopGrabbing()
・・・
ストラテジーはStartGrabbing()
で設定します。選択できるストラテジーの種類は以下の通りです。
- pylon.GrabStrategy_OneByOne
- ・取得された画像は出力キューに順次保持されされます
- pylon.GrabStrategy_LatestImageOnly
- ・最後に取得された画像(最新の画像)だけが出力キューに保持されます
- pylon.GrabStrategy_LatestImages
- ・最後に取得された画像から指定した数の画像が出力キューに保持されます
- pylon.GrabStrategy_UpcomingImage
- ・RetrieveResultメソッドが呼ばれてから画像が出力キューに保持され、取り出されます
- ・機種によっては対応していない場合もあるようです
あと、StartGrabbing()
実行時にキューはクリアされます。
Pylonのインストールフォルダのサンプルを見てみると参考になります。