Halcon一日一练:图像设备介绍

Halcon在设计之初就提供了完整的图像采集方案,适应了多种图像设备采集图像,以及各种不同环境的采集方案。

通常情况下,图像的采集应该是所有机器视觉项目首要解决的任务,不幸的是,需要解决图像采集的问题,对应装备的种类具有特殊性,以及非标准化的硬件设备,比如,USB相机或IEEE1394相机,他们提供的物理接口及设备驱动都完全不一样。为了让我们专注于机器视觉实际的问题,Halcon提供了大量的图像采集接口,通过这种快速接口,HALCON图像采集的代码量大为减少,只要几行代码就能解决问题。 使用halcon我们可以获取来自采集设备和摄像头在采集过程中,不同定时模式的各种配置,更重要的是,这种简单不是以牺牲采集设备的可用功能及效率为代价的。

除了从相机获取图像,也可以采集的图像存储在文件中,HALCON也可以通过存储在文件的方式来输入图像,文件的格式支持:BMP,TIFF,GIF,JPEG,PNG,PNM,PCX,XWD.

采集图像和基本步骤:

      Halcon的采集图像基本包括三个步骤,从文件中读取图像更简单,只需对操作:read_image进行单一获取图像即可。采集图像的三个步骤是:

第一步:打开图像采集设备

第二步:采集图像

第三步:关闭图像采集设备

 

第一步:打开图像采集设备:

如果你想获得从图像采集卡或图像采集设备的图像,例如,我们使用一个IEEE1394的摄像头,第一步是连接该设备,HALCON会帮助我们解除所有与该设备实施的操作细节,我们需要做的只是调用函数open_framegrabber即可,并指定相应图像采集接口的名称。

也有一种虚拟的图像采集接口,它以文件的形式作为虚拟的图像采集接口。顾名思义,这种帧接收器读取图片来自文件,也即所谓的图像序列文件。后者是HALCON特定的文件,通常带有扩展名.seq,它们包含图像文件名,以换行分隔的列表(可以创建一个易于使用文本编辑器)。如果我们连接到这样一个序列,后续调用该文件中指定的顺序grab_image返回图像。另外,我们也可以从一个特定的目录中读取所有图像。这样不必创建一个序列文件,而只是指定的目录名。

调用grab_image返回指定的图像目录中的图像。如果你想测试文件序列的图像,以后需要切换到一个真实的物理图像采集设备,这种应用程序 的两种方法都是有效的。

 

第二步:获取图像

一旦连接设备成功,我们通过简单地调用grab_image获取图像。如果是从磁盘加载图像,我们可以使用read_image,从目前目录和环境变量halconImages指定的目录中搜索图像。

 

第三步:关闭图像采集设备

在应用程序结束时,一定要通过close_framegrabber来关闭图像采集设备的连接,以释放其内存资源,同时如果其它系统需要调用该设备,只有在关闭该设备连接,其它系统调用才能成功。

 

采集图像常用的函数:

1:open_framegrabber:用于打开设备,或者获取设备信息

2:set_framegrabber_param,:设置设备参数,

3:get_framegrabber_param:获取设备参数,

4:grab_image,grab_image_async,采集图像

5:read_image:读取图像

6:close_framegrabber:关闭采集设备。

 

无法应用halcon采集设备

除此之外,我们可能会遇到以下两种情况:

1:我们可以对外部创建的图像使用运营商采用函数gen_image1,gen_image3,gen_image1_extern或gen_image3_extern

2:不支持的图像采集设备

如果当前设备不支持halcon,也就是说HALCON图像采集接口无法支持的图像采集设备,我们也可以通过创建自己的interface来采集图像。