跟我学机器视觉-HALCON学习例程中文详解-QQ摄像头读取条码

合集下载

halcon算子较全的中文手册

halcon算子较全的中文手册

1. Halcon算子概述Halcon是一种强大的机器视觉软件,它由MVTec开发,可用于各种工业和非工业应用。

在Halcon中,算子是至关重要的组成部分,它们可以实现图像处理中的各种功能,如滤波、边缘检测、特征提取等。

本文将以算子作为主题,深入探讨Halcon算子的各种特性和用法。

2. Halcon算子的分类Halcon算子可以分为预处理算子、过滤算子、分割算子、匹配算子、测量算子等多个类别。

每个类别都包含了众多的算子,它们可以根据图像处理任务的不同需求进行灵活组合和调用。

3. Halcon算子的特性Halcon算子具有许多独特的特性,如多样的输入输出形式、灵活的参数设置、高效的运算速度等。

这些特性使得Halcon算子在图像处理领域得到广泛应用,并受到了众多工程师和科研人员的喜爱。

4. Halcon算子的使用技巧在使用Halcon算子时,熟练掌握一些技巧和经验是非常重要的。

合理设置算子的参数、选择适当的算法、理解算子的内部原理等,都可以帮助我们更好地使用Halcon算子,提高图像处理的效率和准确性。

通过一些典型的应用案例,我们可以深入了解Halcon算子的实际应用。

这些案例涵盖了工业质检、医疗影像、无人驾驶、智能制造等多个领域,展示了Halcon算子的强大功能和广泛适用性。

6. 我对Halcon算子的个人理解作为一名Halcon用户,我对Halcon算子有着深刻的认识和体会。

我认为Halcon算子不仅仅是图像处理的工具,更是一种思维方式和解决问题的哲学。

通过深入学习和使用Halcon算子,我对图像处理和机器视觉有了全新的认识和理解。

总结与回顾通过本文的全面介绍和深度探讨,我们对Halcon算子有了更加全面和深入的了解。

从算子的分类到使用技巧,再到实际案例分析,我们逐步领略了Halcon算子的强大功能和潜力。

我相信,在今后的工作和研究中,我们可以更好地运用Halcon算子,为图像处理和机器视觉领域的发展做出更大的贡献。

halcon的datamatrix码的定位点参数

halcon的datamatrix码的定位点参数

halcon的datamatrix码的定位点参数Halcon是一个强大的机器视觉软件库,用于工业图像处理和识别。

其中,DataMatrix 码是一种常用的二维条码技术,广泛应用于物流、医疗、零售等领域。

在Halcon中,对DataMatrix码的定位和识别涉及到一系列参数,下面将详细介绍这些参数。

图像输入:首先,你需要将待识别的图像输入到Halcon的程序中。

这通常通过使用read_image函数完成,该函数允许你指定图像文件的路径。

预处理:预处理是识别过程的重要步骤,包括噪声去除、亮度调整、二值化等。

这些操作有助于改善条码的可读性,并提高后续步骤的准确性。

寻找条码区域:使用find_maxima或find_edges等函数,在预处理后的图像中寻找DataMatrix码的可能区域。

这些函数可以帮助识别条码的轮廓和边缘。

定位和校正:一旦找到可能的条码区域,就需要对其进行定位和校正。

这通常涉及到确定条码的四个角落,并对其进行旋转校正,以便正确地读取条码内容。

在Halcon中,可以使用corner_subpixel和affine_trans_image等函数来完成这些操作。

解码:定位和校正完成后,就可以对条码进行解码了。

Halcon提供了read_dm_code函数来读取和解码DataMatrix码。

该函数会返回解码后的数据以及任何可能的错误信息。

后处理和输出:最后,根据需要,可以对解码后的数据进行进一步的处理,例如格式转换、数据验证等。

处理完成后,可以通过各种方式输出结果,例如显示在界面上、写入文件或通过网络发送。

这些步骤中涉及的参数可以根据具体的应用场景和需求进行调整。

例如,在寻找条码区域时,可以调整边缘检测的阈值参数来改善检测效果;在定位和校正时,可以调整角点检测的精度和旋转校正的算法参数来提高定位准确性。

由于篇幅限制,这里无法提供每个函数的详细参数说明,建议查阅Halcon的官方文档或相关教程以获取更详细的信息。

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

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

机器视觉之halcon入门(6)-一文弄懂halcon连接相机第三章 Halcon 简单例程讲解第一节连接相机3.1.1 简单的啰嗦几句上一章介绍的两个例子,都是基于现成的图片,进行处理然后转C#。

但是工程中,不可能安排一个人一直给程序提供现成的图片。

需要代码自己控制相机,从相机那里实时获取图片,实时图像处理。

是不是这个理?所以每款相机都有一个SDK或者API,让你用你的语言去操控相机。

但是估计你比较懒,(不是我估计的,是编写halcon的那群程序员。

)所以他们弄了一个通用的,几乎可以操控市面上百分之好多的相机。

(反正我还没遇到它不能的,所以我基本上就用的它。

)有一种说法是用相机自带的SDK速度会快一点,有兴趣且偏执的朋友,可以have atry。

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)。

当然刚开始你也可以全部都默认,整太多记不住。

那就直接点击'连接'按钮。

如果连接成功,'连接'二字会变成'断开',言下之意,你再点一下就可以断开这个连接。

跟我学机器视觉-HALCON学习例程中文详解-开关引脚测量

跟我学机器视觉-HALCON学习例程中文详解-开关引脚测量

跟我学机器视觉-HALCON学习例程中文详解-开关引脚测量* This example program demonstrates the basic usage of a measure object.* Here, the task is to determine the width of and the distance between the* pins of a switch.*本例程演示了如何使用测量工具测量开关的引脚宽度和间距* First, read in the image and initialize the program.**************************打开图像***********************************read_image (Image, 'bin_switch/bin_switch_1')get_image_size (Image, Width, Height)dev_close_window ()dev_open_window_fit_image (Image, 0, 0, 640, 640, WindowHandle)set_display_font (WindowHandle, 14, 'mono', 'true', 'false')dev_display (Image)*显示图片如下* Define the rectangular ROI within which the edges will be detected* and create the measure.Row := 390Column := 380Phi := rad(-60)Length1 := 60Length2 := 10Interpolation := 'nearest_neighbor'*************************生成测量矩形ROI************************************** gen_measure_rectangle2 (Row, Column, Phi, Length1, Length2, Width, Height, Interpolation,MeasureHandle)*测量矩形位置尺寸如下:* Determine all edge pairs that have a negative transition, i.e., edge pairs* that enclose dark regions.Sigma := 0.9Threshold := 12Transition := 'negative'Select := 'all'*************************************测量边缘对******************************* measure_pairs (Image, MeasureHandle, Sigma, Threshold, Transition, Select, RowEdgeFirst, ColumnEdgeFirst, AmplitudeFirst, RowEdgeSecond, ColumnEdgeSecond, AmplitudeSecond, IntraDistance, InterDistance)** Visualize the resultsdev_display (Image)dev_set_draw ('margin')dev_set_color ('black')*********显示测量矩形ROI************************************************** gen_rectangle2 (Rectangle, Row, Column, Phi, Length1, Length2)***显示测量的边缘对的尺寸,length1要用ROI的宽度*****************************p_disp_dimensions (RowEdgeFirst, ColumnEdgeFirst, RowEdgeSecond, ColumnEdgeSecond, IntraDistance, InterDistance, Phi, Length2, WindowHandle)*结果如下:close_measure (MeasureHandle)。

halcon代码案例

halcon代码案例

halcon代码案例摘要:1.Halcon 简介2.Halcon 代码案例概述3.Halcon 代码案例详解4.Halcon 代码案例应用领域5.总结正文:1.Halcon 简介Halcon 是德国Micro-Electronic Development 公司开发的一款工业自动化控制系统软件,主要用于机器视觉和工业自动化领域。

Halcon 具有丰富的功能库和灵活的编程方式,能够满足各种复杂的工业自动化需求。

2.Halcon 代码案例概述本文将通过一个简单的Halcon 代码案例,介绍如何使用Halcon 进行工业自动化控制系统的开发。

本案例将演示如何使用Halcon 实现一个简单的机器视觉功能,即通过摄像头捕捉到的图像,判断一个产品的合格与否。

3.Halcon 代码案例详解(1)准备工作:首先,需要安装Halcon 软件,并连接摄像头设备。

(2)编写程序:打开Halcon 软件,新建一个项目,编写程序如下:```PROGRAM MainVAR// 声明变量Image : ARRAY [1..1024, 1..1024] OF BYTE;Product : ARRAY [1..4] OF BYTE;合格: BOOL;END_VARMETHOD Run// 初始化Image := (ARRAY [1..1024, 1..1024] OF BYTE)();Product := (ARRAY [1..4] OF BYTE)();合格:= FALSE;// 读取摄像头图像READ_IMAGE (Image, "摄像头设备地址")// 对图像进行预处理FOR i := 1 TO 1024 DOFOR j := 1 TO 1024 DOImage[i, j] := Image[i, j] > 128END_FOREND_FOR// 提取产品区域FOR i := 1 TO 4 DOFOR j := 1 TO 4 DOProduct[i, j] := Image[i * 256 + j, i * 256 + j]END_FOREND_FOR// 判断产品合格与否IF Product[1, 1] AND Product[1, 2] AND Product[2, 1] AND Product[2, 2] THEN合格:= TRUEEND_IF// 输出结果IF 合格THENWRITE "合格"ELSEWRITE "不合格"END_IF// 延时SLEEP 100END_METHODEND_PROGRAM```(3)编译运行:编译程序,并在摄像头设备上运行。

Halcon基础知识总结(一文学会halcon基础操作,总结自超人视觉)

Halcon基础知识总结(一文学会halcon基础操作,总结自超人视觉)

Halcon基础知识总结(⼀⽂学会halcon基础操作,总结⾃超⼈视觉)此⽂根据《超⼈视觉 halcon启蒙班》写成,结合图⽚和例程,直观简单地介绍halcon的最基本操作基础知识光学:⼏何光学,物理光学数学:导数为主的⾼等数学,矩阵论五种需求:1.识别定位2.符号识别:⼀⼆维码,OCR3.测量需求4.缺陷需求(最常见,难度最⼤)5.⼿眼标定和抓取(结合运动控制)图像处理⼀般思路1.采集2.预处理拉开灰度⼏何变换去噪:中值滤波,均值滤波,⾼斯滤波抠图3.图像分割⼆值化形态学特征选择ps:Halcon⾥区域和图像是不同概念4.识别显⽰5.通信三⼤数据类型图像,区域,XLD灰度直⽅图勾选“阈值”将灰度值在”绿线和红线之间”的以选定颜⾊进⾏填充将把圈定的阈值范围内的直⽅图均匀拉伸释放到整个直⽅图轴上数组语法* Simple tuple operationsTuple1 := [1,2,3,4,5]Number := |Tuple1|SingleElement := Tuple1[3]Part := Tuple1[1:3]Copy := Tuple1[0:|Tuple1| - 1]运⾏结果读取图⽚的四种⽅法1. ⽂件 -> 读取图⽚2. Image Acquisition -> ⾃动检测接⼝(刷新设备)-> Direct show,从摄像头直接读图3. Image Acquisition -> 选择⽂件,从图像⽂件中读取4. Image Acquisition -> 选择路径,结合正则表达式读取路径下的图⽚PS:⽤Image Acquisition读取时记得点击代码⽣成摄像头抓取模式:在可视化 -> 更新窗⼝中调整同步采集:实时抓取,⼀直抓取异步采集:只等图⽚处理完后,grab_image才开始抓取PS:更多信息包括双相机采集,可以在案例 -> ⽅法 -> 图像采集设备中学习ROI(感兴趣区域)特征检测PS:⼆值化之后的区域虽然不连通,但仍然认为是⼀个区域。

halcon——条码定位与识别(一维码)

halcon——条码定位与识别(一维码)

halcon——条码定位与识别(⼀维码)引⾔条码识别的应⽤⼤多数在物流⾏业中(需要识别的条码⼀般在快递包裹中),对于⼀维码的识别,halcon有⾃带条码识别算⼦create_bar_code_model和find_bar_code 。

⽽快递标签处有很多的⽂字,符号和边框,增⼤了定位的难度。

,因此有时也有检测不到条码的情况。

针对这⼀现象,本篇就来深度分析⼀下如何更好的去识别⼀维码。

create_bar_code_model(创建⼀维码模型)create_bar_code_model ([], [], BarCodeHandle)参数⼀//输⼊需要调整的参数名称(为[]表⽰暂时不设置)参数⼆//需要调整的该参数的值。

参数三// 返回的条码模板句柄set_bar_code_param(对模型设置参数)set_bar_code_param( BarCodeHandle, GenParamNames, GenParamValues )BarCodeHandle(in)//模型句柄GenParamNames(in)//参数名称GenParamValues (in)//参数值find_bar_code (识别⼀维码)find_bar_code(Image ,SymbolRegions ,BarCodeHandle, CodeType , DecodedDataStrings)参数列表:Image //输⼊图像SymbolRegions//检测到的条形码区域(输出)BarCodeHandle// 条形码句柄CodeType// 条形码类型DecodedDataStrings//识别结果(输出)(1)图像预处理(增强条码)对⽐度太低:scale_image(或使⽤外部程序scale_image_range),增强图像的对⽐度。

图像模糊:emphasize锐化图像,使条码看起来更清晰。

深⾊背景上读取浅⾊条码:invert_image反转图像。

第10章 HALCON相关实例

第10章  HALCON相关实例

(a)原图
HALCON数字图像处理
(b)根据直方图阈值法阈值分割结果
10.1 字符分割识别
(c)填充孔洞后
(d)开运算后 (e)最终结果
HALCON数字图像处理
10.2 条形码识别
条形码常常又被人们称为条码(BAR CODE),条形码是由一组按一定 编码规则排列的条、空符号,用以表示一定的字符、数字及符号组成的信息。 条形码有一维条码和二维条码,不同的类型的条形码应用在不用的领域。条 形码可以标出商品的生产国家、制造厂家、商品名称、生产日期、图书分类 号、邮件起始地点、类别、日期等信息,因而在商品流通、银行系统等领域 得到了广泛应用。
第10章 HALCON相关实例
◆ 10.1 字符分割识别 ◆10.2 条形码识别 ◆10.3 去雾算法 ◆ 10.4 三维匹配 ◆ 10.5 图像拼接
HALCON数字图像处理
10.1 字符分割识别
字符识别又称光学字符识别(Optical Character Recognition简称OCR),是在图像中识别字符的过程。随着视觉技 术的不断发展,在越来越多的应用中都需要将检测对象上的印刷字 符识别出来。一个典型的例子就是一些产品上所贴的序列号条码, 某些情况下我们需要去读取并且识别出这个序列号的信息。
一般来说,图像拼接的过程由图像获取、图像预处理、图像配准、 图像融合四个步骤组成,其中图像配准是整个图像拼接的基础。
输入图像
图像几何 矫正
图像预处 理
图像配准
图像融合
全景图像
HALCON数字图像处理
10.5 图像拼接
【例10.7】图像拼接HALCON实例,如图10-13所示。
(a)待拼接图像1
(b)待拼接图像2
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

跟我学机器视觉-HALCON学习例程中文详解-QQ摄像头读取条码
第一步:插入QQ摄像头,安装好驱动(有的可能免驱动)
第二步:打开HDevelop,点击助手—打开新的Image Acquisition—选中图像获取接口(I),然后点击检测,找到摄像头。

如下图:
第三步:点击连接,将颜色空间设置为gray,然后点击实时,此时图像窗口中将显示采集到的图像,将物体放置到摄像头前,位置调至条码清晰。

如下图:
集,点击插入代码,此时程序编辑器中将自动生成代码,如下图:
这时单击下运行按钮,将会采集一副图像并显示到图形窗口中。

接下来我们将开始条码读取的工作。

第五步:在Do Something后插入如下代码:
create_bar_code_model ([ ], [ ], BarCodeHandle)
*由于不知道条码是何类型,因此条码类型设置为auto。

CodeTypes := ['auto']
find_bar_code (Image, SymbolRegions, BarCodeHandle, CodeTypes, DecodedDataStrings)
get_bar_code_result (BarCodeHandle, 'all', 'decoded_types', DecodedDataTypes)
这时再重新运行程序,只要图像清晰,此时就可以读到条码了。

条码区域会变成红色,而且在变量窗口中可以查到读取的条码类型和内容。

如下图:
第六步:我们再添加代码,将读取结果直接显示在图像窗口中。

disp_message (WindowHandle, DecodedDataTypes[0]+': '+DecodedDataStrings[0], 'image', 100, 160, 'forest green', 'true')
此时会提示错误WindowHandle未被初始化。

*获取更多课程请Q智达工控学院:1613985351
因为图像采集助手会自动打开一个窗口,因此我们先将它关闭,然后自己创建一个窗口。

在程序最开始加上这两句代码:
dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
再重新运行程序,此时在读取到的条码在图像中写出来了。

如下图:
第七步:由于办公室光照环境不是很好,摄像头质量也不是很高,所以很多情况下如果图像稍微有点模糊就会发生无法读取条码或者读取错误的情况发生。

对策:对采集到的图像进行增强处理。

在图像采集函数后增加如下代码:
emphasize (Image, Image, 2*2+1, 2*2+1, 1)
再重新运行程序,可以发现大功告成,可以稳定的读取条码了。

相关文档
最新文档