图像采集控制

(一)开始采集/停止采集

1.开始采集

  用户打开相机后,可以在任意时刻向相机发送开采命令。在连续采集和触发采集模式下,开采过程如下图所示:
在这里插入图片描述
  连续模式下,相机接收到开采命令后,根据曝光时间和相关参数的设置,以一定帧率进行采集和传输。
在这里插入图片描述
  触发模式下,相机接收到开采命令后,每接收到一个有效的触发信号(包括软触发或者外触发),根据曝光时间和相关参数的设置,产生一触发帧。

2.停止采集

  用户对相机的停采操作,可以在任意时刻发生。相机的停采操作的处理和采集模式没有关系。不同时机的停采,操作过程如图所示:
在这里插入图片描述
  在帧传输阶段,相机接收到停采命令,相机传输完当前数据包后,终止当前传输帧剩余数据的传输,当前传输帧为非完整帧。此帧不会给用户。
在这里插入图片描述
  相机传输一个完整帧后,在帧传输等待阶段,用户向相机发出停采命令,相机返回停采完成状态。即使下一个曝光帧将要产生,也不对此帧传输。

3 .DEMO设置

  Demo上有多个位置连接相机后可以设置开始采集停止采集,具体操作方法如下:
在这里插入图片描述

4.SDK设置

1)C语言

//开始采集
emStatus = GXSetCommandValue(m_hDevice, "AcquisitionStart");
//停止采集
emStatus = GXSetCommandValue(m_hDevice, "AcquisitionStop");

2)C++

//开采
//开启流通道采集
objStreamPtr->StartGrab();
//给设备发送开采命令
objFeatureControlPtr->GetCommandFeature("AcquisitionStart")->Execute();

//停采
objFeatureControlPtr->GetCommandFeature("AcquisitionStop")->Execute();
objStreamPtr->StopGrab();

3)C#

//开始采集
stream.StartGrab();
m_remoteFeatureControl.GetCommandFeature("AcquisitionStart").Execute();

//停止采集代码
if(m_bIsSnap)
{       m_objIGXFeatureControl.GetCommandFeature("AcquisitionStop").Execute();
m_objIGXStream.StopGrab(); 
}

(二)采集模式

  大恒相机的采集模式分为单帧采集和连续采集模式。默认是连续采集模式,也有部分相机不支持单帧采集

1.单帧采集模式

  在单帧采集模式下,相机每次开采只能采集一帧图像
  1) 触发模式设置为 On 时,触发类型任意:
  执行开始采集命令后,相机等待触发信号,触发信号可以是相机的软触发或者外触发。当相机接收触发信号并且获取到图像时,相机将自动停止图像采集。如果想要获取另一帧图像,必须再次执行开始采集命令。
  2) 触发模式设置为 Off:
  执行开始采集命令后,相机获取一帧图像,然后将自动停止图像采集。如果想要获取另一帧图像,必须再次执行开始采集命令。

单帧模式下,也必须设置停采命令后才能够设置开采状态下不能够设置的功能,比如 ROI、Binning等。

在这里插入图片描述

2.连续采集模式:

  在连续采集模式下,相机会连续采集和传输图像,直到停止采集为止
  1) 触发模式设置为 On,触发类型为 FrameStart 时:
  执行开始采集命令后,相机等待触发信号,触发信号可以是相机的软触发或者外触发。相机每接收到一个触发信号时,就可以获取到一帧图像,直到执行停采命令为止,不需要每次都执行开采命令。
  2) 触发模式设置为 On,触发类型为 FrameBurstStart 时:
  执行开始采集命令后,相机等待触发信号,触发信号可以是相机的软触发或者外触发。相机每接收到一个触发信号时,就可以连续获取到设置的 AcquisitionFrameCount 帧图像。如果在采集过程中接收到停止采集命令,可能会中断正在传输的图像,导致本次采集到的图像数量未达到 AcquisitionFrameCount 定义的图像帧数 4。
  3) 触发模式设置为 Off:
  执行开始采集命令后,相机将连续获取图像,直到接收到停止采集命令为止。
  可以通过相机的触发等待信号或使用采集状态功能来要检查相机是否处于等待触发信号状态。
在这里插入图片描述

3.Demo设置

在这里插入图片描述

4.SDK设置

1)C语言

//在开始采集之前设置采集模式 
//SingleFrame单帧采集每次开采都只能采集一帧 
//Continuous 连续采集,默认模式
emStatus = GXSetEnumValueByString(m_hDevice, "AcquisitionMode", "SingleFrame");
//获取采集模式
GX_ENUM_VALUE stEnumValue;
emStatus = GXGetEnumValue(m_hDevice, "AcquisitionMode", &stEnumValue);

2)C++

//在开始采集之前设置采集模式 单帧采集每次开采都只能采集一帧
//SingleFrame单帧采集每次开采都只能采集一帧 
//Continuous 连续采集,默认模式
m_objFeatureControlPtr->GetEnumFeature("AcquisitionMode")->SetValue("SingleFrame");
//获取采集模式
string s = m_objFeatureControlPtr->GetEnumFeature("AcquisitionMode")->GetValue();

3)C#

//在开始采集之前设置采集模式 单帧采集每次开采都只能采集一帧
//SingleFrame单帧采集每次开采都只能采集一帧 
//Continuous 连续采集,默认模式
m_objIGXFeatureControl.GetEnumFeature("AcquisitionMode").SetValue("SingleFrame");
//获取采集模式
string s = m_objIGXFeatureControl.GetEnumFeature("AcquisitionMode").GetValue();

(三)触发类型选择

相机的触发类型分为 FrameStart(帧开始触发)和 FrameBurstStart(帧高速连拍开始)。不同的触发类型都对应着各自的一组触发配置,包含触发模式、触发延迟、触发源、触发极性、软触发命令。

1.FrameStart(帧开始触发模式)

帧开始触发用于采集单个图像。相机每次接收到帧开始触发信号时,相机都会开始采集一张图像,帧开始触发时序如图所示:
在这里插入图片描述
在这里插入图片描述

2.FrameBurstStart(帧高速连拍开始)

可以使用帧高速连拍触发采集一系列图像(图像的“连拍”)。相机每次接收到帧高速连拍开始触发信号时,相机都会开始采集一系列图像。采集的图像帧数由“帧高速连拍帧数”参数指定,“帧高速连拍帧数”范围为 1~255默认为 1
例如,如果“帧高速连拍帧数”参数设置为 3,则相机会自动获取 3 张图像。然后,相机等待下一个帧高速连拍开始触发信号。在下一个触发信号到来时,相机会再拍摄 3 张图像,依此类推,如图所示:
在这里插入图片描述

3.Demo设置

在这里插入图片描述

4.SDK设置

打开触发模式

//触发类型选择
//FrameBurstStart 帧高速连拍开始触发模式 一个信号拍多张
//FrameStart 帧开始触发模式 默认模式,一个信号拍一张
emStatus = GXSetEnumValueByString(m_hDevice, "TriggerSelector", "FrameBurstStart");
//高速连拍帧数,只有选择FrameBurstStart才需要设置,并且未采集状态才能设置
emStatus = GXSetIntValue(m_hDevice, "AcquisitionBurstFrameCount", 3);
//触发模式设置On
emStatus = GXSetEnumValueByString(m_hDevice, "TriggerMode", "On");
//获取触发模式
GX_ENUM_VALUE stEnumValue;
emStatus = GXGetEnumValue(m_hDevice, "TriggerMode", &stEnumValue);
//获取触发源
GX_ENUM_VALUE stEnumValue;
emStatus = GXGetEnumValue(m_hDevice, "TriggerSource", &stEnumValue);

C++

//触发类型选择
//FrameBurstStart 帧高速连拍开始触发模式 一个信号拍多张
//FrameStart 帧开始触发模式 默认模式,一个信号拍一张
m_objFeatureControlPtr->GetEnumFeature("TriggerSelector")->SetValue("FrameBurstStart");
//高速连拍帧数,只有选择FrameBurstStart才需要设置,并且未采集状态才能设置
m_objFeatureControlPtr->GetIntFeature("AcquisitionBurstFrameCount")->SetValue(3);
//触发模式设置On
m_objFeatureControlPtr->GetEnumFeature("TriggerMode")->SetValue("On");
//获取触发模式
string s = m_objFeatureControlPtr->GetEnumFeature("TriggerMode")->GetValue();
//获取触发源
string s = m_objFeatureControlPtr->GetEnumFeature("TriggerSource")->GetValue();

C#

//触发类型选择
//FrameBurstStart 帧高速连拍开始触发模式 一个信号拍多张
//FrameStart 帧开始触发模式 默认模式,一个信号拍一张
m_objIGXFeatureControl.GetEnumFeature("TriggerSelector").SetValue("FrameBurstStart");
//高速连拍帧数,只有选择FrameBurstStart才需要设置,并且未采集状态才能设置
m_objIGXFeatureControl.GetIntFeature("AcquisitionBurstFrameCount").SetValue(3);
//触发模式设置On
emStatus = GXSetEnumValueByString(m_hDevice, "TriggerMode", "On");
//获取触发模式
string s = m_objIGXFeatureControl.GetEnumFeature("TriggerMode").GetValue();
//获取触发源
m_objIGXFeatureControl.GetEnumFeature("TriggerSource").GetValue();

(四)触发模式切换

  • 流采集过程中,用户可以不需要停采相机操作,就可以完成对相机的触发模式切换。
  • 相机在用户切换触发模式时,图像传输处于不同的阶段,处理方式如下:
    在这里插入图片描述   如图 ,相机开始采集后,为连续模式。
      在时间点 1,用户切换相机由连续模式切换到触发模式,相机正在传输连续模式产生的数据流 frame3。相机需要对 frame3 的所有数据流发送完毕后(即时间点 2),触发模式才会生效。
      由触发切换到连续模式时,如图时间点 3 和时间点 4,采取同样的处理方式。
    在这里插入图片描述  如图 ,相机开始采集后,为连续模式。
      在时间点 1,用户对相机由连续模式切换到触发模式,相机处于传输等待阶段。相机在接收到切换到触发模式命令后,相机需要对连续模式产生的 frame3 的所有数据流传输完毕后(即时间点 2),才可以发送触发模式下产生的图像数据流。
      同样,在由触发切换到连续模式时,相机处于传输等待阶段,如图 ,时间点 3 和时间点 4,采取同样的处理方式。

(五)连续采集及其配置

1.连续采集配置

  大恒相机支持连续采集功能。在应用程序中,如果用户想要使用连续采集功能,只需要在“采集控制”选项中,“触发模式”选择“Off”即可。大恒相机的默认工作方式连续采集
   用户开启相机后,可直接使用默认参数进行连续拍摄。如需调整,可先修改采集参数再进行连续模式拍摄。在这里插入图片描述

设置 ROI 尺寸,包间隔,也有可能会影响连续采集的的帧率。

2.SDK设置

C语言

//设置连续采集模式 默认就是此模式
emStatus = GXSetEnumValueByString(m_hDevice, "AcquisitionMode", "Continuous");
//FrameStart类型下触发模式关闭
emStatus = GXSetEnumValueByString(m_hDevice, "TriggerSelector", "FrameStart");
emStatus = GXSetEnumValueByString(m_hDevice, "TriggerMode", "Off");
//FrameBurstStart类型下触发模式关闭
emStatus = GXSetEnumValueByString(m_hDevice, "TriggerSelector", "FrameBurstStart");
emStatus = GXSetEnumValueByString(m_hDevice, "TriggerMode", "Off");

C++

//设置连续采集模式 默认就是此模式
m_objFeatureControlPtr->GetEnumFeature("AcquisitionMode")->SetValue("Continuous");
//FrameStart类型下触发模式关闭
m_objFeatureControlPtr->GetEnumFeature("TriggerSelector")->SetValue("FrameStart");
m_objFeatureControlPtr->GetEnumFeature("TriggerMode")->SetValue("Off");
//FrameBurstStart类型下触发模式关闭
m_objFeatureControlPtr->GetEnumFeature("TriggerSelector")->SetValue("FrameBurstStart");
m_objFeatureControlPtr->GetEnumFeature("TriggerMode")->SetValue("Off");

C#

//设置连续采集模式 默认就是此模式
m_objIGXFeatureControl.GetEnumFeature("AcquisitionMode").SetValue("Continuous");
//FrameStart类型下触发模式关闭
m_objIGXFeatureControl.GetEnumFeature("TriggerSelector").SetValue("FrameStart");
m_objIGXFeatureControl.GetEnumFeature("TriggerMode").SetValue("Off");
//FrameBurstStart类型下触发模式关闭
m_objIGXFeatureControl.GetEnumFeature("TriggerSelector").SetValue("FrameBurstStart");
m_objIGXFeatureControl.GetEnumFeature("TriggerMode").SetValue("Off");

(六)软触发采集及其配置

1.软触发使用配置

   大恒相机支持软触发采集功能。使用该功能时,用户需在"采集控制"选项中进行以下设置:
   1)“触发模式”选择“On”
   2)“触发源”选择“Software”
   3)每对“软触发”按钮的“TriggerSoftware”点击一次,将产生一帧软触发图像。
   该功能通过主机传输总线发送指令,控制相机完成图像采集和传输。

2.软触发使用特性

   相机切换到软触发模式后,相机会等待用户发送软触发命令,然后软触发命令来后开始采集图像。一般来说,相机输出的帧率会和软触发频率一致。用户使用软触发功能时,相关特性如下:
1) 当软触发频率低于当前配置的最大帧率时,实际帧率将与软触发频率保持一致;若软触发频率超过最大帧率,部分触发信号将被屏蔽,导致实际帧率低于软触发频率
2) 触发延迟功能是指对接收到的软触发信号进行延迟处理后再触发图像帧采集,系统默认设置为不启用该功能。
在这里插入图片描述

2.SDK设置

C语言

//触发类型选择为FrameStart  
// FrameStart帧开始触发:一个信号一帧  
//FrameBurstStart帧高速连拍:可以一个信号多帧
emStatus = GXSetEnumValueByString(m_hDevice, "TriggerSelector", "FrameStart");
//打开触发模式
emStatus = GXSetEnumValueByString(m_hDevice, "TriggerMode", "On");
//设置触发源为Software
emStatus = GXSetEnumValueByString(m_hDevice, "TriggerSource", "Software");
//发送软触发命令
emStatus = GXSetCommandValue(m_hDevice, "TriggerSoftware");

C++

//触发类型选择为FrameStart  
// FrameStart帧开始触发:一个信号一帧  
//FrameBurstStart帧高速连拍:可以一个信号多帧
m_objFeatureControlPtr->GetEnumFeature("TriggerSelector")->SetValue("FrameStart");
//打开触发模式
m_objFeatureControlPtr->GetEnumFeature("TriggerMode")->SetValue("On");
//设置触发源为Software
m_objFeatureControlPtr->GetEnumFeature("TriggerSource")->SetValue("Software");
//发送软触发命令
m_objFeatureControlPtr->GetCommandFeature("TriggerSoftware")->Execute();

C#

//触发类型选择为FrameStart  
// FrameStart帧开始触发:一个信号一帧  
//FrameBurstStart帧高速连拍:可以一个信号多帧
m_objIGXFeatureControl.GetEnumFeature("TriggerSelector").SetValue("FrameStart");
//打开触发模式
m_objIGXFeatureControl.GetEnumFeature("TriggerMode").SetValue("On");
//设置触发源为Software
m_objIGXFeatureControl.GetEnumFeature("TriggerSource").SetValue("Software");
//发送软触发命令
m_objIGXFeatureControl.GetCommandFeature("TriggerSoftware").Execute();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值