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中文中文注解

HALCON中文中文注解

Halcon查询图像参数1、get_grayval(Image::Row,Column:Grayval)计算Image图像中坐标为(Row,Column)的点的灰度值Grayval。

2、get_image_pointer1(Image:::Pointer,Type,Width,Height)计算Image图像的数据指针Pointer,图像类型Type,图像宽度Width和高度Height。

Pointer指向了Image data的起点位置。

3、get_image_pointer3(ImageRGB:::PointerRed,PointerGreen, PointerBlue,Type,Width,Height)计算彩色图像ImageRGB的参数。

4、get_image_pointer1_rect(Image:::PixelPointer,Width,Height, VerticalPitch,HorizontalBitPitch,BitsPerPixel)计算Image图像中定义区域的最小的长方形的区域的指针Pointer,宽度Width,高度Height,VerticalPitch代表Image的Width*(HorizontalBitPitch/8)。

两个相邻象素的水平距离(以比特计算)HorizontalBitPitch,每像素的比特数BitsPerPixel。

5、get_image_time(Image:::MSecond,Second,Minute,Hour,Day,YDay, Month,Year)获取图像生成的时间。

摄像头获取图像和相关参数1、close_all_framegrabbers(:::)关闭所有图像采集设备。

2、close_framegrabber(::AcqHandle:)关闭Handle为AcqHandle的图像采集设备。

3、open_framegrabber(::Name,HorizontalResolution, VerticalResolution,ImageWidth,ImageHeight,StartRow,StartColumn, Field,BitsPerChannel,ColorSpace,Generic,ExternalTrigger, CameraType,Device,Port,LineIn:AcqHandle)打开图像采集设备参数信息:Name:图像采集设备的名称HorizontalResolution和VerticalResolution:分别指预期的图像采集接口的水平分辨率和垂直分辨率ImageWidth和ImageHeight:指预期图像的宽度部分和高度部分。

Halcon例子说明

Halcon例子说明

Halcon实例说明1、inspect_bottle_mouth。

hdev:易拉管缺陷检测。

用到了极坐标变换2、circular_barcode。

hdev:一维条码检测,用到坐标变换.弧形拉直。

用到了极坐标变换3、surface_scratch.hdev:表面划伤检测.4、ball.hdev:PCB板焊锡点检测。

用到常用算子及开运算opening。

5、best_match_rot_mg_clip1.hdev:带方向的基本模版匹配6、bin_threshold.hdev:计算图片中的灰度直方图7、bin_threshold2.hdev:程序说明怎样bin_threshold与threshold之间的相等转换计算。

8、bottle.hdev:OCR字符的检测9、bottlet.hdev:OCR字符的检测10、check_blister.hdev:药品颗粒检测。

用一些常用算子及坐标变换,图片旋转。

11、check_bottle_crate。

hdev:圆孔检测。

用到opening_circle、select_shape等常用处理算子.12、check_hazelnut_wafers。

hdev:检测物体表面缺陷。

很好的用到了开运算算子opening_circle和闭运算算子closing_circle13、check_smd_tilt.hdev:检测SMD用到算子sobel_amp边缘检测,measure_projection14、check_soft_cheese.hdev:用到算子有彩色图转换为灰度图(rgb1_to_gray),模版匹配15、create_shape_model、find_shape_models,图像坐标变转vector_angle_to_rigid 、affine_trans_contour_xld等算子.16、circles。

hdev:圆拟合算子(fit_circle_contour_xld),边缘检测(edges_sub_pix)。

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

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

跟我学机器视觉-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未被初始化。

Halcon识别一维码的代码实例

Halcon识别一维码的代码实例

Stage I's hdev的代码实例===============================================================================*Autodiscrimination A.hdev**Code generated by Image Acquisition03*获取条形码,并计算及显示解码时间,并从规定读取的条码类型范围中读取被解码的条码类型也可设置成不规定条码类型即自动识别,但会增加解码时间,甚至出现误读的情况。

*可读取多个不同类型的条码,并且多个条码用不同颜色的区域框区分,且读取出来的信息也以相应的颜色做区分dev_close_window()dev_open_window(0,0,600,600,'black',WindowHandle)*先关闭活动图形窗口,再打开这个窗口,标识符为WindowHandle;*相对于界面左上角第0行、第0列,大小为300×300像素,颜色为黑色。

open_framegrabber('DirectShow',1,1,0,0,0,0,'default',8,'rgb', -1,'false','default','Gsou USB2.0Camera',0, -1,AcqHandle)*打开帧接收器(图像采集设备,如摄像头,工业相机等),参数(Parameter)详见这个算子注意,采集器名称不同要更改,或者用助手获取也可以。

grab_image_start(AcqHandle, -1)while(true)grab_image_async(Image,AcqHandle, -1)*开始条形码识别create_bar_code_model([],[],BarCodeHandle)*必备的创建条码解码的开头,下面有一段结束代码dev_update_var('off')dev_update_pc('off')dev_update_window('off')*刷新窗体set_display_font(WindowHandle,14,'mono','true','false')dev_set_draw('margin')dev_set_line_width(3)Colors:=['forest green','magenta','blue','red','yellow']*设置区域框的属性,如无填充色、边框线大小为3,颜色。

halcon车片识别和二维码识别大作业

halcon车片识别和二维码识别大作业

数字图像处理学院:信息工程学院专业:软件工程姓名:谢磊金学号:2014124089指导教师:丁爱玲2014年12月3日目录前言 (3)第一部分基于halcon与VS2010的焊点图像处理实验 (4)1.1实验概括 (4)1.2 halcon的实现过程(附代码附图介绍): (4)1.3 halcon与VS2010的结合 (13)附源代码(halcon代码请看上文,VS端代码太多请参考源程序): (15)第二部分基于VC++的路面裂缝检测实验.......................................... 错误!未定义书签。

1 总体方案设计 ................................................................................. 错误!未定义书签。

2 裂缝图像的预处理 ......................................................................... 错误!未定义书签。

3 算法总体测试结果与分析 ............................................................. 错误!未定义书签。

4 路面破损识别系统软件的使用 ..................................................... 错误!未定义书签。

第三部分基于MATLAB的路面裂缝检测 ......................................... 错误!未定义书签。

1解题思路: ......................................................................................... 错误!未定义书签。

2算法设计: ......................................................................................... 错误!未定义书签。

基于HALCON的机器视觉系统的研究与实现

基于HALCON的机器视觉系统的研究与实现

基于HALCON的机器视觉系统的研究与实现近年来,机器视觉系统以其高效率、高可靠、低成本的特点在国外取得了广泛的应用。

机器视觉系统适用于众多领域,例如工业自动化、医药业、制造业、农业等,弥补了人类视觉的很多不足。

本文采用德国MVTec公司的专业机器视觉软件HALCON来开发机器视觉系统,提出了相关机器视觉实现方法,并且在机器视觉实验平台上完成了一个弹簧片检测任务。

目前关注较多的是机器视觉系统的硬件部分,而机器视觉软件部分关注较少,一个先进的机器视觉系统除了具有高性能的硬件外,还需要有高性能的软件,虽然说许多常见的开发软件例如Mircosoft的Visual Studio、NI的LabWindows\CVI等等都可以开发机器视觉系统,但是开发周期比较长,针对性较弱,程序的复杂程度较高。

而采用HALCON作为机器视觉和图像处理核心软件,不仅大大缩短了开发周期,降低了开发难度,而且可以参考HALCON提供的众多机器视觉和图像处理例程来针对具体的任务做具体开发。

文章的第一章研究了机器视觉系统的组成、应用现状和发展,并且对机器视觉软件HALCON做了概述。

第二章根据相关要求,选择合适的硬件单元,设计和搭建了VS-ZM1200机器视觉实验平台。

第三章研究了机器视觉中常用的一些图像处理技术,重点讨论了在弹簧片检测任务中所采用的图像处理技术和算法,如图像的增强,分割,边缘检测等。

第四章研究了机器视觉软件,重点研究了HALCON,并且对在Visual C++开发环境下如何使用HALCON编写的程序做了讨论。

第五章介绍了在VS-ZM1200机器视觉实验平台上,使用HALCON和Visual C++开发的一套弹簧片检测系统,该系统完成关于弹簧片的尺寸参数测量和外观参数判别的任务。

第一章:绪论1.1机器视觉概述人类在征服自然、改造自然和推动社会进步的过程中,为了克服自身能力、能量的局限性,发明和创造了许多机器来辅助或代替人类完成任务。

HALCON机器视觉课件全解只是分享

HALCON机器视觉课件全解只是分享

判断前三位,如果为win 则为windows操作系统
设置字体,格式为:-FontName-Height-Width-ItalicUnderlined-Strikeout-[Bold-][CharSet-]
以-作为开始和结束
下划线
粗体
第二步:确立矩形框,设定ROI
以矩形两条中心轴交点作为原点, 与X轴形成的角度
显示矩形ROI
计算数组元素的个数
显示边缘线
数值的显示位置大小的设定
计算得出边缘线条的起始点和结 束点
设定显示的颜色,宽度,并显示
由于窗体 被缩放, 所以需要 重新确定 位置 从该指令中的出的字 体大小为按照文本窗 口的像素大小设定的
在适当的位置显示数值
获取当前图像的起始坐标点和 结束坐标点
提取边缘最近的点作为参考像 素
中心点的行
坐标
中心点的列坐 标
测得的图像窗 口宽和高
功能:为取得一 垂直于矩形中心
中心轴角度 主轴半径
轴的边缘直线
输出图像的窗口代 码
第三步:根据设定的参数进行测量
高斯平滑滤波器中的参数 灰度门槛值 返回所有边缘对,如果设定为last则只回最后一对, 如果为first则只回第一对
获取窗体的信息,按照无放大缩小的 像素进行测量
得出缩放前后的比 例
功能:获取文本显示 所需要的范围大小
需要显示的文本信息
文本显示有一个基 准线,Ascent为上 升值,Descent为下 降值,加起来便是 高
正常显示文本所需要 的宽和高
得出在图像中显示所需 大小
显示字符串
文本左上脚的坐标, 以一个大写字母为 依据
功能为设置文本放置的位 置
显示边缘,管脚宽度和相互之间的 距离
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Halcon机器视觉二维码实例及分步注解
[plain]view plaincopy
1.*2D Code generated by Image Acquisition01
2.*QR Code
3.dev_close_window()
4.dev_open_window(0,0,400,400,'black',WindowHandle)
5.*先关闭活动图形窗口,再打开这个窗口,标识符为WindowHandle;
6.*相对于界面左上角第0行、第0列,大小为400×400像素,颜色为黑色。

7.open_framegrabber('DirectShow',1,1,0,0,0,0,'default',8,'rgb',-1,'false','defa
ult','Gsou USB2.0Camera',0,-1,AcqHandle)
8.*打开帧接收器(图像采集设备,如摄像头,工业相机等),参数(Parameter)详见这个算子
9.*注意摄像头的名称,可以用工具栏中的“助手”——打开新的Image Acquisition获取摄像头及插入代码
10.grab_image_start(AcqHandle,-1)
11.while(true)
12.grab_image_async(Image,AcqHandle,-1)
13.create_data_code_2d_model('QR Code',[],[],DataCodeHandle)
14.*二维码的创建开头的算子,clear为结束清除的算子,见下。

15.set_display_font(WindowHandle,16,'mono','true','false')
16.dev_set_color('forest green')
17.dev_set_draw('margin')
18.dev_set_line_width(3)
19.set_data_code_2d_param(DataCodeHandle,'default_parameters','enhanced_recognition')
20.*设置选定参数的二维数据模型,参数详见这个算子
21.find_data_code_2d(Image,SymbolXLDs,DataCodeHandle,[],[],ResultHandles,DecodedDa
taStrings)
22.*检测和读取二维代码符号,也支持读取二维数据模型的序列,参数详见这个算子
23.for i:=0to|ResultHandles|-1by1
24.select_obj(SymbolXLDs,SymbolXLD,i+1)
25.get_contour_xld(SymbolXLD,Row,Col)
26.get_string_extents(WindowHandle,DecodedDataStrings[i],Ascent,Descent,TxtWidth
,TxtHeight)
27.disp_message(WindowHandle,DecodedDataStrings[i],'image',max(Row-50),max([min(
Col+30)-TxtWidth/2,1]),'black','true')
28.endfor
29.*这段for循环语句的目的是让解码到的字符串(二维码的内容)显示到二维码深绿色(forest green上
面定义)的解码区域框的行列位置。

30.*disp_message(WindowHandle,DecodedDataStrings,'window',12,12,'black','true')
31.*如果不需要设置显示到区域框中间的位置,而是显示到窗体的上方或其他位置,那么不需要上面那段for
语句,只需这段信息显示的语句即可显示到窗体相应位置。

32.if(|DecodedDataStrings|>0)
33.disp_continue_message(WindowHandle,'black','true')
34.stop()
35.endif
36.*if语句,当解码一个(大于0,可设置多个)二维码就暂停摄像头获取图像,直至按F5.
37.clear_data_code_2d_model(DataCodeHandle)
38.endwhile
39.close_framegrabber(AcqHandle)
二维码的网址:/buvjx
二维码的网址:。

相关文档
最新文档