机器视觉之eVision
比利时 EURESYS 公司的 eVision 图像类的类库 EasyMultiCam 库,它提供了一个有效的和易于使用的硬件抽象层,因此可以作为图像采集卡的高级驱动动序,可以同时为多个 CCD 影像提供不同的传输通道,并且他们之间的信道互不影响。
MultiCam 作为所有 Euresys 采集卡的编程接口,为了方便编程人员的工作,它将"信道"相关的参数写入 CAM 文件里,通过调用 CAM 文件即可完成参数设置。整个视频图像的采集主要包括三个部分:初始化信道、打开信道、关闭信道。
一:初始化信道
首先我们要创建两个信道:
Euresys::MultiCam::Channel* channelWith1;
Euresys::MultiCam::Channel* channelWith2;
设置相关通道参数:
#define MC_CamFile (MCPARAMID)
#define camFile -1
channelWith1 ->SetParam(MC_CamFile, camFile);
channelWith2 ->SetParam(MC_CamFile, camFile);
然后注册回调函数
channel->RegisterCallback();
Euresys::MultiCam::Channel* channelWith1;
Euresys::MultiCam::Channel* channelWith2;
设置相关通道参数:
#define MC_CamFile (MCPARAMID)
#define camFile -1
channelWith1 ->SetParam(MC_CamFile, camFile);
channelWith2 ->SetParam(MC_CamFile, camFile);
然后注册回调函数
channel->RegisterCallback();
二:打开信道
打开信道之前,首先做一个判断,是选择的信道 1 还是信道 2,然后发送命令并激活信道。
switch (currentChannel)
{
case CHANNEL_1:
channelWith1->SetActive();//打开信道 1
break;
case CHANNEL_2:
channelWith2->SetActive();//打开信道 2
break;
打开信道之前,首先做一个判断,是选择的信道 1 还是信道 2,然后发送命令并激活信道。
switch (currentChannel)
{
case CHANNEL_1:
channelWith1->SetActive();//打开信道 1
break;
case CHANNEL_2:
channelWith2->SetActive();//打开信道 2
break;
default:
break;
}
}
三:关闭信道
关闭信道,可以用函数 SetIdle(),通过选择来关闭当前的通道。
switch (currentChannel)
{
case CHANNEL_WITH_1:
channelWith1->SetIdle(); //关闭信道 1
break;
case CHANNEL_WITH_2:
channelWith2->SetIdle(); //关闭信道 2
break;
}