机器视觉之halcon入门(6)-一文弄懂halcon连接相机

第三章 Halcon 简单例程讲解

第一节 连接相机

3.1.1 简单的啰嗦几句

上一章介绍的两个例子,都是基于现成的图片,进行处理然后转C#。但是工程中,不可能安排一个人一直给程序提供现成的图片。需要代码自己控制相机,从相机那里实时获取图片,实时图像处理。是不是这个理?所以每款相机都有一个SDK或者API,让你用你的语言去操控相机。但是估计你比较懒,(不是我估计的,是编写halcon的那群程序员。)所以他们弄了一个通用的,几乎可以操控市面上百分之好多的相机。(反正我还没遇到它不能的,所以我基本上就用的它。)有一种说法是用相机自带的SDK速度会快一点,有兴趣且偏执的朋友,可以have a try。

3.1.2 言归正传

这次我不先上代码了,因为有助手。咱们一步一步按照助手的来。首先你的相机得连上电脑哈。然后打开halcon。

图3-1-2-1

单击上图中(3-1-2-1)'助手'中的红框框'打开新的Image Acquisition'项会弹出下图(3-1-2-2)中的窗口。按照图中步骤,先单击'自动检测接口'按钮,等他搜到你的相机后,后面的框中会显示相机接口的类型。此时说明你检测成功,找到你相机了。进入第二步,点击'连接'。

图 3-1-2-2

图 3-1-2-3

点击连接后,就会出现上图(3-1-2-3),设备栏显示的是你当前选择的相机型号,同时有好几个相机连接电脑的时候,可以在后面那个小箭头处进行选择;分辨率里面可以选择图片水平和垂直像素数量,这儿只能要么默认要么全部;颜色空间里面可以选择图片的颜色空间,你要是不是很懂啥叫颜色空间,没关系,里面可以选择是彩色图片(RGB)还是黑白图片(Gray)。当然刚开始你也可以全部都默认,整太多记不住。那就直接点击'连接'按钮。如果连接成功,'连接'二字会变成'断开',言下之意, 你再点一下就可以断开这个连接。这时候点击上方的'参数'按钮,连接成功后,它会由原来的灰色变成可点击的状态。点击进入参数设置页面,这里面你可以进行很多相机的参数设置。

图 3-1-2-4

我简单介绍其中几个基础的参数,上图(3-1-2-4)第一个红框里面的,是图像的宽高设置,就是你相机采集图片的像素宽高(500万像素的相机是可以有拍200万像素照片的模式的,这个你知道吧?)第二个框是相机的帧率设置。一般相机参数上都会标明相机的最大帧率。但是根据你现场实际情况,你可以让你的相机不用那么累。(帧率就是你1秒钟拍几张照片的意思。。。)第三个框,是曝光时间。就是为了让光照射到相机感光材料的感光面上,快门所要打开的时间。所以时间越长,照片越亮。

滚动条往下拉,还会看到一个常用的参数GainRaw。它是相机的增益,原理好像是通过相机里面的放大信号对电路进行增强,使得感光芯片更加灵敏,在比较暗的条件下也可以拍得更清楚一些,更亮一些。(对于这几个参数的设置,详见本节TIPS 1)

现在我把长宽设置成1600,1200,帧率设置成10,曝光设置成1000us,然后点击上面的代码生成,进入代码生成的页面。如下图(3-1-2-5),再点击插入代码。

图 3-1-2-5

在程序窗口就会看到自动生成的几行代码。如下图(3-1-2-6)。

图 3-1-2-6

我们来简单分析下这几行代码。当然如果你英语实在太厉害,你也可以自己F1去看官方解释,那边的解释更详尽。

第一句:

open_framegrabber ():这里面好多参数。我至今不看帮助也不能全部回忆出来每个参数的意义。所以你应该也不用记,只要记住倒数第四个,是你的相机型号名称,最后一个是你相机的句柄就可以了。

Set_framegrabber_param(AcqHandle,'Width',1600):这一行的意思是设置相机的参数,比如照片的长宽啊,曝光时间啊,增益啊,颜色空间啊都是这个算子来设置。第一个参数是相机的句柄;第二个参数是要设置的参数名;第三个参数是设置的该参数的数值。那么这些参数名怎么才知道呢?有两种方法,一种是你利用图像采集助手,在'参数'页面,修改下那个参数,然后生成代码,就自动出来了,像上图中的我那样,还有一种就是自己在参数页面看,那个参数叫什么,然后输入。本例的第5行到第10行都是利用这个算子来设置参数。

参数设置完了,该控制相机拍照了。这儿系统给的代码是自动选择的异步获取(异步采集),什么叫异步获取呢?我的理解就是我相机按照你设置的参数先一直拍。拍完相机就保存一个地方,但是永远只保存最新的一张,然后你想用你就去取,但是拍照和取照这两个步骤不一定是同步的,比如你每秒钟拍10张,但是我需要照片的时候才会去取最新拍摄的一张,不一定每张照片的数据都转成图片格式传给我。而与之相对应的叫同步获取(同步采集),就是算子grab_image()每次采集直接转成图片。显然异步虽然比同步复杂点,但是更好用,有时候也会比同步的速度更快。异步就是图中的两个算子

grab_image_start(: : AcqHandle, MaxDelay : ):从指定的图像采集设备启动一个异步抓取。第一个参数就是这个设备的句柄,第二个参数是最大延迟时间,一般都填默认值-1。

grab_image_async( : : AcqHandle, MaxDelay :):从指定的图像采集设备获取图像的异步抓取。看到没,上一个算子是启动,一直去拍,下面一个算子是获取图像。其中第一个参数就是获取到的图像输出了,第二个参数是设备的句柄,第三个参数还是最大延迟时间,还是默认值-1。

通过grab_image_start(),让相机一直在拍摄,而且把每次最新的照片数据保存在句柄AcqHandle里面。第二个算子就是把句柄里面的数据转换成image输出。代码中用了一个无限的for循环,循环显示拍摄的图片。这就是传说中的摄像了吧。。。。好神奇

,好吧,我无聊了。。。。

最后就是:

close_framegrabber (AcqHandle):Halcon还是非常有始有终的,你开过什么,最后就得关掉。虽然你直接关了整个halcon也是关。但是代码里面还是得有这一步。

有了这一招,你就学会了用halcon打开绝大多数的相机,并进行参数设置且可以实时获取图片了。是的,距离上纲上线你又近了一步!这样的话,在C#里面你就可以把这几个算子转成C#代码,作为一个打开相机的方法。把你需要的图像处理算子写成另一个方法,在for循环里面进行调用,就可以实现实时拍摄图片实时图像处理了!

言归正传,我们还是要复习下本节学到的算子:

1)open_framegrabber():

2)Set_framegrabber_param(AcqHandle,'Width',1600):

3)grab_image_start(: : AcqHandle, MaxDelay : ):

4)grab_image_async( : : AcqHandle, MaxDelay :):

5)close_framegrabber (AcqHandle):

本节TIPS:

根据正文的介绍,相机的曝光时间和增益都可以让相机更亮。另外还有两种方法,就是调节镜头的光圈和调节光源亮度。所以我们有4个方法来调整图片的亮度。大多数情况下,先调节镜头光圈和光源,然后是曝光时间,最后是增益。这个还真不是很好描述。这么说吧,相机贵于光源,所以要累,就先累光源。什么是光源地球人都知道了。什么是镜头光圈呢?它是控制镜头的进光量的,光线是先通过镜头再进入相机的嘛,所以把光圈调到最大,也是可以提高照片亮度的。什么是曝光时间呢?就是相机拍照时候打开芯片接收光线的时间,它直接影响到相机的进光量。

如果你拍摄的物体是在运动中的,曝光时间也会被物体的运动速度所限制,比如:运动物体的速度为1m/s。那1毫秒就移动一毫米。如果你的曝光时间设置为1000us,那么拍出来的图片就有1mm的拖影,还有你的像元尺寸所对应的实际物理尺寸也会有一定的影响,比如你1个像素表示的是0.5mm的大小,那就意味着拍出来的照片是有2个像素的拖影的。简单说就是这个道理了。最后是增益吧,因为增益高了,相当于放大了信号,那么图片中的噪点也会被放大,当然这不是你想要的。具体的还要看项目需求,这四个参数的协调有时候也是一门技术活,是需要积累经验的。

(0)

相关推荐

  • halcon单相机标定和畸变矫正程序

    视觉/图像重磅干货,第一时间送达 新机器视觉 最前沿的机器视觉与计算机视觉技术 206篇原创内容 公众号 转自 | 机器人及PLC自动化应用 为什么要进行单相机标定? 广义:畸变矫正和一维和二维测量 ...

  • 摄影入门:新手学摄影必看!一文弄懂光圈

    来源:摄影技巧入门教程 摄影入门:作为曝光三要素之一的光圈,对一张照片的质量影响很大,那么如何掌握好光圈的使用方法?下面一起来详细了解. 1.什么是光圈   光圈是相机镜头中几片极薄的金属片组成的,中 ...

  • 治疗带状疱疹的药物,一文弄懂!

    一文带你认识治疗带状疱疹的药物. 来源:药评中心    作者:Gcplive 带状疱疹,俗称"串腰龙",是一种由水痘-带状疱疹病毒(VZV)引起的感染性疾病.该病毒具有亲神经.亲皮 ...

  • 新手学摄影必看!一文弄懂光圈【一点资讯】

    作为曝光三要素之一的光圈,对一张照片的质量影响很大,那么如何掌握好光圈的使用方法?下面一起来详细了解. 1.什么是光圈 光圈是相机镜头中几片极薄的金属片组成的,中间能通过光线,大家透过镜头就能看到. ...

  • 成都明星餐饮领跑全国的功臣是它?一文弄懂明星餐饮那些事儿(上篇)

    筷玩思维 · 2021-04-26 10:40 来源:红餐网 4月17日,由萧敬腾站台的"傅面面"面馆在成都正式开业,对于这个消息,业内人早已见怪不怪.明星开餐厅将成都作为第一站, ...

  • 案件败诉就是有黑幕?一文弄懂败诉原因!辟谣法律败诉那些事

    很多人都有过打官司的经历,无论成为原告,还是被告,都有可能面临败诉的可能.于是乎,谣言就产生了: 1."我看法官一直在打断我说话,早就定好了要我败诉!" 2."看看对方女 ...

  • 一文弄懂督脉28个穴位位置图 | 人体穴位图

    督脉分布于人体后正中线及头面正中,循行28个穴位,首穴为长强,末穴为龈交.其中有2个穴位在臀部,12个穴位在腰背部,其余14个穴位则分布在头部. [经络循行] 督脉起始于胞中,下出会阴,后行于腰背正中 ...

  • 摄影技巧 | 手机的拍照功能你都了解吗?一文弄懂

    在这个全民手机摄影的时代,怎样才能最大化的利用手机拍出好看的照片呢? 下面,以华为手机为例,给大家详细介绍一下手机的拍照功能. 1.认识手机拍照界面 ①为手机设置栏,包括闪光灯.AI.色彩标准选项以及 ...

  • 一文弄懂!1360名开国少将中包含的所有补授和晋升情况

    我军第一次授衔的少将数量为什么有多种版本?一种是798人,一种是802人,还有一种是1360人?另外,首次授衔和补授,还有晋升有何不同?这些情况该怎么彻底捋清楚? 1955年9月27日,元帅.将官授衔 ...

  • 一文弄懂各种loss function

    有模型就要定义损失函数(又叫目标函数),没有损失函数,模型就失去了优化的方向.大家往往接触的损失函数比较少,比如回归就是MSE,MAE,分类就是log loss,交叉熵.在各个模型中,目标函数往往都是 ...