【机器视觉】 halcon中图像获取
00. 目录
文章目录
- 00. 目录
- 01. 概述
- 02. 相机接口
- 2.1 USB接口
- 2.2 IEEE1394接口
- 2.3 CameraLink接口
- 2.4 GigE千兆以太网接口
- 2.5 CoaXPress接口
- 2.6 Nbase-T接口
- 2.7 光纤接口
- 03. Halcon图像采集过程
- 3.1 打开设备
- 3.2 设置相机参数
- 3.3 获取图像
- 3.4 结束采集图像
- 04. Halcon相机助手
- 05. 文件读取
- 5.1 通过读取图像助手读取图像
- 5.2 通过拖拽文件到主窗口
- 5.3 通过图像采集助手读取图片
- 5.4 通过代码读取图像
- 5.5 通过代码生成图像
- 06. 预留
- 07. 附录
01. 概述
Halcon是一款图像处理软件。在Halcon中获取图像有3种方式:
- 使用硬件采集图像
- 直接读取采集好的图像
- 通过某些方法生成一张图像
02. 相机接口
2.1 USB接口
USB接口相机是数字相机,直接输出数字图像信号。USB全称是UniversalSerialBus(通用串行总线),USB接口是4“针”,其中2根为电源线、2根为信号线。USB是串行接口,可热拔插,连接方便。USB2.0,传输速度480Mbps,通讯距离5m,80%的带宽用于图像传输。USB3.0,传输速度4.8Gbps,通讯距离10m,80%的带宽用于图像传输。由于USB接口相机使用方便,接口广泛,目前在显微镜、科研实验、便携式设备等行业大量应用。
2.2 IEEE1394接口
1394接口,又称“火线”(FireWire),用于将数码产品与计算机及其他机器之间的连接。IEEE1394总线是高速串行总线,1394a最高的传输速度为400Mbps,1394b最高的传输速度为800Mbps。IEEE1394支持热插拔、数据传输实时性、采用总线结构、即插即用。1394接口分为4芯和6芯,4芯中有两对数据线,6芯除数据线外还包括一组电源线以对外接设备进行供电。IEEE1394接口,不需要控制器,可以实现对等传输,1394a最大传输距离为4.5米,1394b传输距离通常为10米,在降数据率情况下可延伸到100米(100Mbps),采用中继设备支持可进一步提高传输距离。
2.3 CameraLink接口
由AIA协会推出的数字图像信号通讯接口协议,是一种串行通讯协议。采用LVDS接口标准,具有速度快、抗干扰能力强、功耗低。从Channellink技术上发展而来的,在Channellink技术基础上增加了一些传输控制信号,并定义了一些相关传输标准。协议采用MDR-26针连接器或SDR-26针连接器,具有高速率,带宽可达6400Mbps、抗干扰能力强、功耗低的特点。
2.4 GigE千兆以太网接口
由AIA(AutomatdeImagingAssociation)创建并推广,是一种基于千兆以太网通信协议开发的相机接口标准。适用于工业成像应用,通过网络传输无压缩视频信号。是一个使用价格低廉线缆长距离传输图像的标准。
2.5 CoaXPress接口
CoaXPress是一种非对称的高速点对点串行通信数字接口标准,传输速度高达6.25Gbps,传输距离超过100m。数据传输量大,传输距离长,可选择传输距离和传输量:从50m@6.25Gbps到170m@1.25Gbps,价格低廉,易集成、支持热插拔。
2.6 Nbase-T接口
Nbase-T接口技术是有Nbase-T联盟引领的一种全新的网络技术,它通过定义一种新的以太网信号方式,使得现有已安装的双绞线能够在长达100m的范围内突破线缆1Gb/s的限制。Nbase-T可以让现有大量安装的超5类和6类线的传输速度达到2.5Gb/s或5Gb/s。
Nbase-T接口特点如下:它是GigE接口的升级版,在传输距离不变,器材不变的情况下,传输速度可以达到5Gb/s。
2.7 光纤接口
光纤接口是基于光纤通信的接口,其传输速度可达16.3Gb/s,单模光纤的连接距离可达10km,多模光纤的连接距离可达300m或者500m。一般情况下,光纤需要配备“特别”的采集卡,而且光纤线不能随意从中间连接,而需要专业设备才能连接,在连接处会比较脆弱,易出现故障。
光纤接口特点包括光纤通道传输速度快,传输距离远,但需要更新原有线缆设备。
03. Halcon图像采集过程
3.1 打开设备
相关算子
open_framegrabber 算子
程序示例
* Select a suitable image acquisition interface name AcqName
info_framegrabber(AcqName,'port',Information,Values)
* Open image acquisition device using the default settings, see
* documentation of the actually used interface for more details
open_framegrabber(AcqName,1,1,0,0,0,0,'default',-1,'default',-1.0, \'default','default','default',-1,-1,AcqHandle)
grab_image(Image,AcqHandle)
close_framegrabber(AcqHandle)
3.2 设置相机参数
相关算子
set_framegrabber_param
get_framegrabber_param
不同相机可以设置的参数有所不同。
3.3 获取图像
相关算子
从指定的图像采集设备启动异步采集
grab_image_start
从指定的图像采集设备异步采集一幅图像
grab_image_async
从指定的图像采集设备同步抓取图像
grab_image
异步采集示例
* Select a suitable image acquisition interface named AcqName.
open_framegrabber('AcqName', 1, 1, 0, 0, 0, 0, 'default', -1, 'default', \-1.0, 'default', 'default', 'default', -1, -1, AcqHandle)
* Start asynchronous grabbing.
grab_image_start(AcqHandle, -1)
* Run acquisition loop.
while (true)* Get image, start next grab.grab_image_async(Image, AcqHandle, -1.0)* Next: Do something with the grabbed image.
endwhile
close_framegrabber(AcqHandle)
同步采集图像示例
* Select a suitable image acquisition interface name AcqName
info_framegrabber(AcqName,'port',Information,Values)
* Open image acquisition device using the default settings, see
* documentation of the actually used interface for more details
open_framegrabber(AcqName,1,1,0,0,0,0,'default',-1,'default',-1.0, \'default','default','default',-1,-1,AcqHandle)
grab_image(Image,AcqHandle)
close_framegrabber(AcqHandle)
3.4 结束采集图像
相关算子
关闭指定的图像采集设备
close_framegrabber
04. Halcon相机助手
通过Halcon相机助手采集图像,然后生成代码。
05. 文件读取
在不能通过硬件获取图像的时候,就需要将拍摄好的图像加载到程序中,HALCON提供了几种读取图像的方法。
5.1 通过读取图像助手读取图像
选择“文件”菜单中的“读取图像”的选项
选择图像,然后选择确定
生成代码如下:
read_image (Image, 'E:/苹果.jpg')
5.2 通过拖拽文件到主窗口
拖拽图片文件到Halcon主窗口,出现如下对话框
选择确定,自动插入如下代码
read_image (Image2, 'E:/苹果2.jpg')
5.3 通过图像采集助手读取图片
最后生成代码如下
* Image Acquisition 01: Code generated by Image Acquisition 01
list_files ('E:', ['files','follow_links'], ImageFiles)
tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case'], ImageFiles)
for Index := 0 to |ImageFiles| - 1 by 1read_image (Image, ImageFiles[Index])* Image Acquisition 01: Do something
endfor
5.4 通过代码读取图像
通过代码的方式批量读取文件夹图像
* Image Acquisition 01: Code generated by Image Acquisition 01* 文件路径
list_files ('E:/IMG', ['files','follow_links'], ImageFiles)* 筛选图片格式
tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case'], ImageFiles)* 循环读取文件夹图像
for Index := 0 to |ImageFiles| - 1 by 1read_image (Image, ImageFiles[Index])* Image Acquisition 01: Do something
endfor
5.5 通过代码生成图像
示例代码如下
* 生成一张无灰度的图像
gen_image_const (Image, 'byte', 32, 32)* 生成一种灰度渐变的图像
gen_image_gray_ramp (ImageGrayRamp, 1, 1, 128, 256, 256, 512, 512)* 生成一张有灰度的图像
gen_image_proto (ImageGrayRamp, ImageCleared, 128)* 设置图像某点灰度值
set_grayval (ImageCleared, 10, 10, 255)
06. 预留
07. 附录
7.1 机器视觉博客汇总
网址:https://dengjin.blog.csdn.net/article/details/116837497
【机器视觉】 halcon中图像获取相关推荐
- 转:跟我学机器视觉-HALCON学习例程中文详解-QQ摄像头读取条码
跟我学机器视觉-HALCON学习例程中文详解-QQ摄像头读取条码 跟我学机器视觉-HALCON学习例程中文详解-QQ摄像头读取条码 第一步:插入QQ摄像头,安装好驱动(有的可能免驱动) 第二步:打开H ...
- halcon例程讲解_跟我学机器视觉-HALCON学习例程中文详解-开关引脚测量
跟我学机器视觉-HALCON学习例程中文详解-开关引脚测量 This example program demonstrates the basic usage of a measure object. ...
- (一)掰开了,揉碎了,说经典halcon中的那些算子
最重要的写在前面: 文末:我曾尝试用OpenCV中算子来还原Halcon中的算子,但是受时间和经验的限制,只能进行到如下:如果后续有必须应用OpenCV的场景,再结合起来搞. 但是最重要的经验是: 1 ...
- halcon中相似变换、仿射变换、投影变换的区别以及应用方式和例程
在机器视觉系统中,镜头是重要成像部件之一,而基于小孔成像原理的工业镜头往往会产生透视畸变现象,如何校正畸变是进行图像分析的前提 ,这其中就会用到投影变换,也是几何变换的一种.除此之外,图像处理中常用到 ...
- 图像处理HALCON中的模板匹配方法总结
HALCON中的模板匹配方法总结 摘要 1. Shape-Based matching的基本流程 2. 基于形状匹配的参数关系与优化 摘要 德国MVTec公司开发的HALCON机器视觉开发软件,提供了 ...
- halcon:(4)halcon中XLD的概念与应用----汽车引擎盖圆孔检测
xld(extended Line Descriptions):扩展线的描述. 在halcon中经常会用到的两个概念: 1.region简单的理解区域region,就是某种具有结构体性质的二值图,正常 ...
- Halcon中MIN宏定义与自己定义的C++中MIN函数--重命名冲突问题解决方法
想要实现一个取得最小值的函数,发现一直出问题,报错 看上面MIN显示为一个宏定义,但是下面才是我们要的函数 看来是重名了,尝试了加括号的方法发现还是不行 后来,考虑到HALCON中的MIN我们不用,解 ...
- 机器视觉系统中相机镜头选型技巧_工业相机在机器视觉系统中的地位和作用
一.什么是工业相机 工业相机是机器视觉系统中的一个关键组件,其最本质的功能就是将光信号转变成有序的电信号.选择合适的相机也是机器视觉系统设计中的重要环节,相机的选择不仅直接决定所采集到的图像分辨率.图 ...
- halcon中编程运算符_R编程中的运算符
halcon中编程运算符 Operators in a programming language are certain tokens or symbols that perform specific ...
最新文章
- java client类_Jmeter中自定义JavaSamplerClient类的编写
- 简单借还书管理系统c语言,急求程序!!!简单图书馆借/还书管理子系统
- 【Groovy】自定义 Xml 生成器 BuilderSupport ( nodeCompleted 方法获取节点闭合信息 )
- Python入门100题 | 第030题
- C++ 一个例子彻底搞清楚拷贝构造函数和赋值运算符重载的区别
- SDUT OJ -2892 A
- Canvas制作动态进度加载水球
- HTML+CSS+JS实现 ❤️等离子球体ui动画特效❤️
- 新手silverlight练习--五子棋( 二 )
- 想要成为一名三维建模师?想要月薪10K?你了解这些吗?
- phash图像识别应用
- android 获取芯片版本_谷歌:未来Android手机将获得4年软件更新
- 微软云平台 Azure简介 (三)Windows Azure 存储概述
- 文本编辑器——VI/VIM
- hashmap自定义排序java,如何在Java中对HashMap进行排序
- 2021 年 7 款优秀免费自动回复邮件工具(优缺点比较)
- 网易im 服务器消息格式,网易云信快速集成以及消息类型自定义
- Python实现多条.txt文本数据合并为.csv文件数据
- 小白如何打造一个基础的留言板网站(二)
- 哈佛大学公开课-幸福课-个人笔记
热门文章
- UImenuController
- java的4种代码块
- 从一个实例看javascript几种常用格式的转换
- 无法访问请求的页面,因为该页的数据的相关配置数据无效
- javascript dom追加内容的例子
- 庖丁解牛看委托和事件(续)
- 中级统计师基础知识中计算机,【2014年中级统计师《统计基础理论及相关知识》预习:计算机操作系统】- 环球网校...
- C++中虚函数工作原理和(虚)继承类的内存占用大小计算
- lis最长上升子序列o(nlogn)优化
- mysql Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nona