Qt(C++)项目中使用 Basler 工业相机(图像获取策略)

时间:2022-02-23 19:46:01

Qt(C++)项目中使用 Basler 工业相机(图像获取策略)

Pylon 中的 CInstantCamera 类支持四种图像获取策略,分别称为:

  1. One by One Grab Strategy
  2. Latest Image Only Grab Strategy
  3. Latest Images Strategy
  4. Upcoming Image Grab Strategy

下面就简单写写这几种策略的含义和区别。

One by One Grab Strategy

这种模式是最简单的,也是 CInstantCamera 默认的图像获取策略。获取到的图像放到一个FIFO 队列中。每次我们从队列中取的(RetrieveResult)都是最早放到队列中的图像。

Latest Image Only Grab Strategy

这个策略下只有最新到的图像保存在输出队列中。如果一份旧图像还没被读取新图像就又来了,那么旧图像就被舍弃。这样可以保证读取到图像永远都是读取时刻最新的。

Latest Images Strategy

这个模式下输出队列可以保存不止一张图像,具体最多能保存几张图象由 CInstantCamera::OutputQueueSize 来指定。当新的图像来了,而队列已满时,旧的图像被舍弃。 当 CInstantCamera::OutputQueueSize 为 1 时就是 Latest Image Only Grab Strategy。当CInstantCamera::OutputQueueSize = CInstantCamera::MaxNumBuffer,就和 One by One Grab Strategy 一样了。

Upcoming Image Grab Strategy

这个模式很特别,只有当 CInstantCamera::RetrieveResult() 被调用后才会采集图像。USB 相机不支持这种策略。

如何设置这些策略呢,非常的简单,只要用 StartGrabbing() 函数的第一个参数指定一下就可以了。

void Pylon::CInstantCamera::StartGrabbing  ( 
EGrabStrategy strategy = GrabStrategy_OneByOne,
EGrabLoop grabLoopType = GrabLoop_ProvidedByUser
)