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来采集图像。
Halcon一日一练:图像设备介绍的更多相关文章
- Halcon一日一练:读取文件目录图像的三种方法
第一种方法: 读了一个单一图像: read_image(Image,'fabrik') 这种方式可以快速的读取软件自身携带的库图像文件,系统设定了库图像映像文件的快速读取方式,我们也可以通过绝对地址的 ...
- Halcon一日一练:图像拼接技术2:步骤与例程
上一篇主要介绍了图像拼接的一些原理和方法,这一篇将主要介绍步骤和例程: 接上一篇: 基于特征的接拼方法,分为四个步骤 1.特征检测:从图像中检测出显著且独特的图像特征,诸如:闭合区域,直线段,边缘,轮 ...
- Halcon一日一练:图像采集设备的基本参数
因操作图像处理之前,需要对图像进行采集.采集图像,我们首先要确定的是图像的像素和采集的效率.这些都需要对设备进行配置与操作.现实情况是图像设备有各自不同的采集方式,配置也各不相同.这就需要设备提供商提 ...
- Halcon一日一练:创建三通道图像
首先理解一个什么是三通道图像: 三通道图像就是彩色图像,我们之前黑白相机或黑白电视机都是彩用的灰阶图像,即单通道图像,一般是2的8次方个灰阶,即256个灰阶.彩色图像采用RGB,红绿蓝三个通道来合成彩 ...
- Halcon一日一练:图像、变量实时更新
某些场合,我们需要刷新图像来识别图像处理过程的差异性,便于调试判断问题和预测.Halcon提供了图像刷新操作,这些操作不会改变程序的最终处理结果. 例程: **实时刷新图像 dev_update_wi ...
- Halcon一日一练:图像分辨率与像素
1.图像像素: 像素是指由图像的小方格即所谓的像素(pixel)组成的,这些小方块都有一个明确的位置和被分配的色彩数值,而这些一小方格的颜色和位置就决定该图像所呈现出来的样子.像素是构成图像的基本单元 ...
- Halcon一日一练:CAD类型的相关操作
大很多场合,需要在视觉程序中导入CAD文档,比如,在3C行业,需要对手机外壳进行CNC加工,或者点胶操作,此时,需要获取产品的各个点的数据.如果将CAD直接导入,就会大的减少编程工作量,同时也能达到很 ...
- Halcon一日一练:获取程序运行时间
很多时候,我们需要知道每个函数的运算周期,以提高程序的运行效率.知道运行时间对于图像算法处理很重要 Halcon提供相关的算子,我们先来看代码: **获取图像处理时间 read_image(Image ...
- Halcon一日一练:图像分割之阈值分割1
先了解什么是阈值,度娘告诉我的是:一个领域或一个系统的界限称为阈,其数值称为阈值.在图像中,我们把图像看成一个由像素灰度值组成的数集,那么阈,就是这个图像中,根据目标与背景灰度值的差异,选取的一个合适 ...
随机推荐
- TestNG(十) 依赖测试
package com.course.testng.suite; import org.testng.annotations.Test; public class DepenTest { @Test ...
- kafka报错:Invalid message size: 0
现象 1.kafka topic 部分分区积压 2.问题kafka 节点上一直报错:java.lang.IllegalStateException: Invalid message size: 0 [ ...
- Gitlab+Gitlab-CI+Docker实现持续集成(CI)与持续部署(CD)
写在前面 记录一下,一个自动化开发部署项目的构建过程与简单使用,实现真正的DevOps gitlab安装 步骤一:安装依赖 yum -y install git gcc glibc-static te ...
- Spring Boot 简介与入门(2.1.6版)
Spring Boot 2.1.6 版 与时俱进是每一个程序员都应该有的意识,当一个Java程序员在当代遍布的时候,你就该意识到能多学点什么.可观的是后端的框架是稳定的,它们能够维持更久的 ...
- 使用Thymeleaf给前端绑定值
1.pom依赖 <!-- thymeleaf --> <dependency> <groupId>org.springframework.boot</grou ...
- 无广告版本Flash player 一枚,需要的拿走~
无广告版本flashplayer,国内flashplayer已经被植入了广告,安装后不断的弹出广告使用体验很差,最开始还以为是电脑被恶意植入捆绑插件, 检查半天发现竟然是浏览器的flash playe ...
- 什么是VR中的Locomotion?
Locomotion,本文中我称之为移位,是VR研究中最重要的话题之一.因为它属于VR中三大元老级操作(Selection选择,Manipulation操纵物体,Locomotion移位),其中,前两 ...
- ng 目录详解
在新建的项目中需要我们关注的就是package.json和src文件夹 node_modules (项目所需依赖)是package.json所创建的模块安装到node_modules中 src:是代码 ...
- js数组和表的基本操作
数组 var v = [3, 6, "hello"]; console.log(v.length); 数组的遍历1 function ss() { for (var i = 0; ...
- Eclipse的Debug(一)
本文链接:https://blog.csdn.net/u011781521/article/details/55000066 http://blog.csdn.net/u010075335/ar ...