HALCON中级篇:图像采集

图像采集

显然,图像采集是在所有机器视觉任务中必须解决的任务,不幸的是,这个任务主要由与以图像采集设备形式出现的特定的非标准化硬件互动来组成的,例如一个帧抓取板或者一个IEEE 1394相机。为了让你能够专注机器视觉问题,HALCON提供了能够完成这种与大量图像采集设备互动的接口。

在你的HALCON应用中,图像采集任务就被减少到几行代码,例如几个算子的调用。还有,这种简便性并没有以限制可用函数来实现的:用HALCON, 你可以从不同定时模式的采集设备和相机的各种配置采集到图像。

除了从相机中采集图像,HALCON也允许你输入存储在文件中图像(支持的格式:BMP, TIFF, GIF, JPEG, PNG, PONM, PCX, XWD)。当然,你也可以存储你获取的图像到文件中。

基本概念

基本上用HALCON采集图像由3个步骤组成,从文件中读取图像甚至更简单。它主要由一个算子read_image的简单调用组成。

打开图像采集设备

如果你想从一个帧抓取板或者一个图像采集设备如一个IEEE1394相机中获取图像,第一步就是去连接这个设备。HALCON会为你剔除所有设备特定的细节;所有你需要做的就是去调用算子open_framegrabber,指定所对应图像采集接口的名字。

这里也有一个“虚拟的”图像采集接口,叫File。 就像它的名字, 这个“帧抓取”从文件中,同时也从所谓的图像序列文件中读取图像,后者是HALCON特定的文件,典型的扩展名为.seq;他们包含一个图像文件名列表,其用新行分离开(你可以用一个文本编辑器轻松的创建它)。

如果你连接到了这样的序列,随后去调用grab_image返回序列中的图像。另外,你也可以从一个特定路劲下读取所有的图像。然后,你不必要去创建了一个序列文件,但是需要简单的指定路径名,而不是序列文件作为参数“CameraType”的值。现在,去接着调用grab_image返回在指定图像路劲下的图像。如果你想用图像文件序列去测试你的应用,随后转向真实的图像采集设备,这两种方法都是有用的。

采集图像

当已经连接到了设备,你只要简单调用grab_image就可以采集到图像。

为了完成从硬盘加载图像,你可以用read_image。图像将在现有路径或者在环境变量HALCONIMAGES路劲下去搜索图像。

关闭图像采集设备

在应用的最后,你可以用算子close_framegrabber去关闭连接的图像采集设备,进而释放其资源。

第一个例子

就像先前已经说过的,从文件中采集图像对应一个简单算子的调用;

下面的代码处理从一个图像序列文件中读取的图像:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200407A046LV00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券