跟我学机器视觉-HALCON学习例程中文详解-QQ摄像头读取条码
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的程序中。
这通常通过使用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 简单例程讲解第一节连接相机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学习例程中文详解-开关引脚测量* 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代码案例摘要: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的最基本操作基础知识光学:⼏何光学,物理光学数学:导数为主的⾼等数学,矩阵论五种需求: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有⾃带条码识别算⼦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相关实例
(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
调用halcon读码算法库
调用Halcon读码算法库1. 简介Halcon是一种强大的机器视觉软件库,用于图像处理和分析。
它提供了丰富的功能和算法,可以用于各种应用领域,包括工业自动化、医疗影像、智能交通等。
其中,Halcon的读码算法库可以用于识别和解码各种类型的条码、二维码和文字。
本文将介绍如何调用Halcon读码算法库,并演示一些常见的应用场景和使用技巧。
2. 安装和配置Halcon在开始调用Halcon读码算法库之前,需要先安装和配置Halcon软件。
以下是一些基本步骤:2.1 下载Halcon软件可以从Halcon官方网站下载最新版本的Halcon软件。
根据操作系统的不同,选择合适的版本进行下载。
2.2 安装Halcon软件下载完成后,运行安装程序并按照提示进行安装。
可以选择默认安装路径,也可以自定义安装路径。
2.3 配置Halcon环境变量安装完成后,需要配置Halcon的环境变量,以便在命令行或其他编程环境中能够正确调用Halcon的库文件。
具体步骤如下:1.打开控制面板,点击“系统和安全”。
2.点击“系统”,然后点击“高级系统设置”。
3.在弹出的窗口中,点击“环境变量”按钮。
4.在“系统变量”部分,找到名为“HALCONROOT”的变量,如果不存在,则点击“新建”按钮创建该变量。
5.将变量值设置为Halcon的安装路径,例如“C:Files”。
6.在“系统变量”部分,找到名为“Path”的变量,如果不存在,则点击“新建”按钮创建该变量。
7.在变量值的末尾添加Halcon的bin目录路径,例如“C:Files”。
完成上述步骤后,Halcon的读码算法库就可以在编程环境中使用了。
3. 调用Halcon读码算法库3.1 创建Halcon程序首先,需要创建一个Halcon的程序文件,用于调用读码算法库。
可以使用任何支持Halcon的编程语言,如C++、C#、Python等。
以下是一个使用C++调用Halcon读码算法库的示例程序:#include <iostream>#include "HalconCpp.h"int main() {// 初始化HalconHlong hv_WindowHandle;HOperatorSet::OpenWindow(0, 0, 640, 480, 0, "visible", "", &hv_WindowHandl e);// 读取图像HObject ho_Image;ReadImage(&ho_Image, "image.jpg");// 创建读码器HBarcodeReader hBarcodeReader;CreateBarCodeReader("DataMatrix", "default_parameters", &hBarcodeReader);// 设置读码参数SetBarCodeReaderParam(hBarcodeReader, "timeout", 10000);// 读取条码HRegion ho_Region;HTuple hv_DecodedDataStrings;FindBarCode(ho_Image, &ho_Region, hBarcodeReader, &hv_DecodedDataStrings);// 显示结果DispObj(ho_Image, hv_WindowHandle);DispObj(ho_Region, hv_WindowHandle);DispText(hv_WindowHandle, hv_DecodedDataStrings, "image", "bottom", "left ");// 关闭HalconCloseWindow(hv_WindowHandle);return 0;}3.2 调用读码算法库在上述示例程序中,首先通过Halcon的ReadImage函数读取一张图像。
halcon教程
halcon教程Halcon是一种广泛应用于机器视觉领域的软件库,它提供了丰富的图像处理和分析功能。
本教程将介绍Halcon的基本使用方法,涵盖图像读取、预处理、特征提取、目标检测等常用操作。
1. 图像读取使用Halcon的read_image函数可以从文件中读取图像数据。
可以通过指定文件路径来读取图像,例如:read_image(Image, 'image.jpg')2. 图像预处理在图像处理之前,通常需要对图像进行一些预处理操作,以改善后续处理的效果。
Halcon提供了丰富的预处理函数,如灰度化、平滑、滤波等。
例如,可以使用以下代码对图像进行灰度化处理:gray_image(Image, GrayImage)3. 特征提取Halcon提供了多种特征提取函数,可以从图像中获取有用的信息。
常用的特征包括边缘、角点、斑点等。
例如,可以使用find_edges函数在图像中提取边缘信息:find_edges(GrayImage, Edges, 10, 40)4. 目标检测目标检测是机器视觉中的一个重要任务,Halcon提供了多种目标检测函数和算法。
例如,可以使用find_shape_models函数对图像中的形状进行检测:find_shape_models(GrayImage, Model, AngleStart, AngleExtent, MinScore, NumMatches, SubPixel, Greediness, Result)以上是一些Halcon的基本用法,通过学习这些基础知识,您可以在机器视觉应用中更好地运用Halcon库进行图像处理和分析。
希望这些信息对您有所帮助!。
halcon入门教程
halcon入门教程Halcon(哈康)是一款由美国密歇根州慕尼黑市的MVTec软件公司开发的机器视觉开发平台。
它提供了丰富的图像处理和分析函数,可以用于工业自动化、机器人视觉、医学图像处理等各个领域。
Halcon的入门教程首先要了解其基本概念和术语。
以下是一些常用术语的简要介绍:1. 图像:在Halcon中,图像指的是一个或多个矩阵组成的数据对象。
每个矩阵表示图像中的像素值,可以是灰度图像或彩色图像。
2. 灰度图像:灰度图像是指每个像素只有一个灰度值的图像。
在Halcon中,灰度图像通常用单通道矩阵表示。
3. 彩色图像:彩色图像是指每个像素有多个颜色分量的图像。
在Halcon中,彩色图像通常用多通道矩阵表示,每个通道表示一个颜色分量。
4. 模板匹配:模板匹配是一种在输入图像中寻找与模板图像最相似区域的方法。
Halcon提供了多种模板匹配算法,可以根据需要选择合适的算法。
5. 区域:在Halcon中,区域是指图像中的一个连续像素集合。
可以通过二值化、分割等方法得到区域。
除了上述基本概念外,入门教程还应包括以下内容:1. 安装与配置:介绍如何下载、安装和配置Halcon开发环境。
2. 图像加载与显示:介绍如何加载和显示图像,以及常用的图像显示函数。
3. 图像处理:介绍Halcon提供的常用图像处理函数,例如平滑、增强、边缘检测等。
4. 区域处理:介绍Halcon提供的区域处理函数,例如区域拟合、区域合并、形态学操作等。
5. 模板匹配:介绍Halcon提供的模板匹配函数,例如统计形状模板匹配、模板匹配算法比较等。
6. 应用实例:通过实际案例展示如何使用Halcon解决实际问题,例如物体检测、识别和测量等。
通过学习上述内容,可以初步掌握Halcon的基本功能和使用方法,为进一步深入学习和应用奠定基础。
Halcon学习之二:摄像头获取图像和相关参数
Halcon學習之二:攝像頭獲取圖像和相關參數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:指預期圖像的寬度部分和高度部分。
StartRow和StartColumn:指顯示預期圖像的開始坐標Field:預期圖像是一半的圖像或者是完整圖像BitsPerChannel:每像素比特數和圖像通道ColorSpace:輸出的色彩格式的抓住圖像{gray、raw、rgb、yuv、default}Generic:通用參數與設備細節部分的具體意義。
ExternalTrigger:是否有外部觸發CameraType:使用相機的類型Device:圖像獲取設別連接到的設備Port:圖像獲取設別連接到的端口LineIn :相機輸入的多路轉接器AcqHandle:圖像獲取設備的Handle4、grab_image ( : Image : AcqHandle : )獲取AcqHandle的圖像采集設備的Image。
Halcon中文简体手册
中文手册快速指引目录Introducing HALCON (4)1.1 Key Features (4)1.2 谁应该用HALCON? (5)1.3 您需要的知识 (5)1.4 开始使用HALCON (6)1.5 如何取得更多信息 (6)如何用HALCON 来开发程序 (8)2.1 HALCON 的核心: 组织架构以及数据结构 (9)2.2 HDevelop 快速入门 (12)2.3 在程序语言中使用HALCON (13)2.4 延伸HALCON 功能 (15)2.5 HALCON 的使用极限 (15)各种行业的应用 (16)3.1 电子零件和设备 (16)3.2 食物 (19)3.3 医疗和生命科学 (20)3.4 铁、钢和金属 (23)3.5 机械 (26)3.6 航空摄影测量和遥感 (32)3.7 印刷 (38)3.8 橡胶、合成纤维材料、金属薄片 (39)3.9 半导体 (41)第一章Introducing HALCONHALCON 是当今machine vision技术的代表,它总是以最新科技为基础,提供了现今市场中最强大的vision library。
不论您的工作为何,HALCON都能快速而精确的解决问题。
Vision Development Environment 一个专业的影像处理工具不能只具有影像处理功能。
影像处理只是整个工作的其中一环,还要有其它软件功能,像是过程控制,数据处理,硬件方面还有照明和取像设备,以及其它硬体机构等等。
一个影像处理系统除了要易于使用,还必须能够以富有弹性的方式将上述功能加入开发的流程之中。
为此,HALOCN考虑到各种重要的层面:透过一个交互式的工具HDevelop快速达成软件开发的工作,藉由程序代码的输出,可以轻易的和标准的软件开发工具,例如Micrisoft Visual C++ 整合。
问题导向式文件涵盖了所有层次,包括取得重点信息到进阶的细项讨论。
跟我学机器视觉-HALCON学习例程中文详解-测量圆环角宽间距
跟我学机器视觉-HALCON学习例程中文详解-测量圆环脚宽间距* This example program demonstrates the basic usage of a circular measure object.* Here, the task is to determine the width of the cogs.*首先读取图像,获取图像的宽度和高度* First, read in the image and initialize the program.read_image (Image, 'rings_and_nuts')dev_close_window ()dev_open_window_fit_image (Image, 0, 0, 640, 640, WindowHandle)set_display_font (WindowHandle, 14, 'mono', 'true', 'false')get_image_size (Image, Width, Height)*读到的图像如下:* Extract the rings.*******************自动阈值分割,此时为一个区域,如图**************************** bin_threshold (Image, Region)connection (Region, ConnectedRegions)***************************填充区域内的孔洞,效果如图************************** fill_up (ConnectedRegions, RegionFillUp)*******************计算区域的紧性,机器视觉算法与应用第168页***************** compactness (RegionFillUp, Compactness)************通过紧性特征进行区域筛选,在1.5到2.5之间的为需要测量的圆环******** for i := 0 to |Compactness|-1 by 1if (Compactness[i] > 1.5 and Compactness[i] < 2.5)select_obj (RegionFillUp, ObjectSelected, i+1)** Determine the size and position of the rings.**************计算选择区域的最小外接圆和最大内接圆,存储圆心和半径************** *两个半径的均值作为测量圆弧半径,AnnulusRadius 为测量圆弧宽度******************* smallest_circle (ObjectSelected, Row, Column, RadiusMax)inner_circle (ObjectSelected, CenterRow, CenterCol, RadiusMin)Radius := (RadiusMax+RadiusMin)/2.0AnnulusRadius := (RadiusMax-RadiusMin)/4.0** Determine the position between two cogs.* This position is then used as the start angle for the circular ROI.********多边形近似逼近区域,存储多边形角点的坐标值,机器视觉算法与应用第252页get_region_polygon (ObjectSelected, AnnulusRadius, RowsBorder, ColumnsBorder)********计算每个角点到最大内接圆圆心的距离,然后进行排序********************* SqrDistanceBorder := (RowsBorder-CenterRow)*(RowsBorder-CenterRow) + (ColumnsBorder-CenterCol)*(ColumnsBorder-CenterCol)****************************************从小到大排序*************************** tuple_sort_index (SqrDistanceBorder, Indices)****************计算直线的角度,圆心和到圆心最近的多边形角点所确定的直线******** ********************************将该角度作为测量圆弧的起始角度***************** line_orientation (CenterRow, CenterCol, RowsBorder[Indices[0]], ColumnsBorder[Indices[0]], AngleStart)*************我认为检测圆开始角度直接设为0度也可以*************************** * AngleStart := rad(0)AngleExtent := rad(360)* Create the measure for a circular ROI.Interpolation := 'bilinear'**********************生成测量圆弧,为完整圆环(360度)************************* gen_measure_arc (CenterRow, CenterCol, Radius, AngleStart, AngleExtent, AnnulusRadius, Width, Height, Interpolation, MeasureHandle)** Determine all edge pairs that have a negative transition, i.e., edge pairs* that enclose dark regions.* Note that the output parameters IntraDistance and InterDistance are given as arc lengths.Sigma := 1.0Threshold := 30Transition := 'negative'Select := 'all'********进行边缘对测量,RowEdgeFirst, ColumnEdgeFirst,RowEdgeSecond, ********ColumnEdgeSecond为检测圆弧检测到的边界的中心点的坐标,IntraDistance, ********InterDistance分别为边缘对间的距离和边缘对的弧线距离********************* ********如有疑问,请咨询qiuqiu:1613985351****************************** measure_pairs (Image, MeasureHandle, Sigma, Threshold, Transition, Select, RowEdgeFirst, ColumnEdgeFirst, AmplitudeFirst, RowEdgeSecond, ColumnEdgeSecond, AmplitudeSecond, IntraDistance, InterDistance)** Determine the number of cogs.NumCogs := |RowEdgeFirst|** Determine the linear distance between the two edges of each edge pair ('Linear cog size')* as well as the angular distance of the edge pairs ('Angular cog size').**************************计算边缘对的直线距离和弧度*************************** distance_pp (RowEdgeFirst, ColumnEdgeFirst, RowEdgeSecond, ColumnEdgeSecond, LinearDistance)AngularDistance := deg(IntraDistance/Radius)Visualize the determined edges.******************将边缘对的起始终止点画出,并显示测量结果**********************gen_empty_obj (Crosses)for i := 0 to |RowEdgeFirst|-1 by 1gen_cross_contour_xld (Cross, RowEdgeFirst[i], ColumnEdgeFirst[i], AnnulusRadius*2.0, atan2(RowEdgeFirst[i]-CenterRow,ColumnEdgeFirst[i]-CenterCol)) concat_obj (Crosses, Cross, Crosses)gen_cross_contour_xld (Cross, RowEdgeSecond[i], ColumnEdgeSecond[i], AnnulusRadius*2.0, atan2(RowEdgeSecond[i]-CenterRow,ColumnEdgeSecond[i]-CenterCol)) concat_obj (Crosses, Cross, Crosses)endfordev_display (Image)dev_set_line_width (4)dev_set_color ('black')dev_display (Crosses)dev_set_line_width (1)dev_set_color ('white')dev_display (Crosses)** Display the measured size of the cogs.disp_message (WindowHandle, 'Number of cogs: '+|RowEdgeFirst|+' ', 'window', 260, 10, 'black', 'true')disp_message (WindowHandle, 'Mean cog size: ', 'window', 286, 10, 'black', 'true')disp_message (WindowHandle, '- Arc length: '+mean(IntraDistance)$'.2f'+' +/- '+deviation(IntraDistance)$'.2f'+' pixel', 'window', 310, 10, 'black', 'true')disp_message (WindowHandle, '- Linear: '+mean(LinearDistance)$'.2f'+' +/- '+deviation(LinearDistance)$'.2f'+' pixel', 'window', 334, 10, 'black', 'true')disp_message (WindowHandle, '- Angular: '+mean(AngularDistance)$'.2f'+' +/- '+deviation(AngularDistance)$'.2f'+' deg ', 'window', 358, 10, 'black', 'true')** Close the measureclose_measure (MeasureHandle)disp_continue_message (WindowHandle, 'black', 'true')stop ()endif***************************for循环,测量其他圆环******************************** endfor。
工业机器视觉基础教程-halcon篇
工业机器视觉基础教程-halcon篇工业机器视觉是通过计算机技术和图像处理算法,利用摄像机等图像采集设备对工件或产品进行检测、识别和测量的方法。
Halcon是一种常用的工业机器视觉软件,具有强大的图像处理能力和丰富的算法库。
本教程将介绍Halcon的基础知识,帮助读者快速上手和理解该软件的使用方法。
1. Halcon基础知识Halcon是由奥地利MVTec公司开发的一款基于图像处理的机器视觉软件。
它提供了丰富的图像处理工具和各种算法,可以实现图像的分割、特征提取、匹配等功能。
Halcon支持多种开发语言,如C++, C#, Python等,方便用户进行二次开发。
2. Halcon安装和界面介绍用户可以从MVTec公司的官方网站上下载Halcon软件,并按照官方的安装指南进行安装。
安装完成后,用户可以打开Halcon的界面,界面主要包括图像视窗、工具栏、菜单栏等部分。
图像视窗用于显示图像,工具栏提供了常用的操作按钮和工具,菜单栏提供了各种功能选项和设置。
3. Halcon图像处理基础在Halcon中,图像处理是通过一系列的操作和算法来实现的。
例如,图像的载入、显示、保存等操作可以通过相应的函数来完成。
Halcon提供了各种图像处理函数,如滤波、二值化、形态学操作等,可以对图像进行预处理和后处理。
此外,Halcon还支持图像的分割、特征提取、形状匹配等高级图像处理功能。
4. Halcon编程基础Halcon的编程语言类似于C/C++,开发者可以通过调用Halcon的函数和方法来实现图像处理和分析。
对于Halcon编程的基础,需要了解变量的定义、数组的使用、控制结构的应用等。
此外,Halcon还提供了一些特定的编程元素,如图像域、区域、模型等,用于处理图像的特定部分或特征。
5. Halcon实例应用通过实例应用,可以更好地理解Halcon的使用方法和功能。
例如,可以通过Halcon实现目标检测与识别,可以通过Halcon进行位姿估计和测量,还可以通过Halcon实现条码的读取和解析等。
halcon 函数 中文说明
halcon 函数中文说明
Halcon 是一种计算机视觉库,提供了丰富的函数来进行图像处理和分析。
以下是一些常见的 Halcon 函数及其中文说明:
1. read_image:读取图像文件。
2. write_image:将图像数据写入文件。
3. rgb_to_gray:将 RGB 图像转换为灰度图像。
4. threshold:进行图像二值化处理。
5. reduce_domain:将图像限制在指定的区域内。
6. crop_rectangle:裁剪图像的矩形区域。
7. find_shape_model:在图像中查找指定形状的模板。
8. affine_trans_image:对图像进行仿射变换。
9. gen_circle_contour_xld:生成圆形轮廓。
10. intersection_lines:计算两条直线的交点。
以上只是 Halcon 库中的一小部分函数,它还提供了许多其他的函数和工具,用于各种图像处理和计算机视觉任务。
halcon条码类型
halcon条码类型Halcon条码类型Halcon是一款强大的机器视觉软件,具有丰富的条码识别功能。
在Halcon中,支持多种条码类型的识别,每种条码类型都有其特定的应用场景和优势。
本文将介绍几种常见的Halcon条码类型及其特点。
一、一维条码1. EAN-13EAN-13是国际通用的一维条码,由13个数字组成,用于商品的唯一标识。
它的特点是具有高容错性和大容量,能够存储较多的信息。
2. Code 39Code 39是一种常见的字母数字条码,由字母和数字组成。
它的特点是可以识别大写字母、数字和一些特殊字符,适用于多种应用场景。
3. Code 128Code 128是一种高密度的条码,能够存储较多的数据。
它的特点是可以识别数字、字母和特殊字符,广泛应用于物流和仓储管理等领域。
二、二维条码1. QR码QR码是一种常见的二维条码,由黑白方块组成。
它的特点是可以存储较多的信息,具有高容错性和快速识别的优势。
QR码广泛应用于移动支付、电子票务等领域。
2. Data MatrixData Matrix是一种紧凑型的二维条码,由黑白方块组成。
它的特点是可以存储较多的数据,具有高容错性和可靠性。
Data Matrix 常用于电子元件追溯、物流管理等领域。
3. PDF417PDF417是一种高密度的二维条码,能够存储大量的数据。
它的特点是具有高容错性和可靠性,广泛应用于票务、身份证等领域。
三、其他条码类型除了一维条码和二维条码,Halcon还支持其他一些特殊的条码类型,如GS1 DataBar、Pharmacode等。
这些条码类型在特定的应用场景中有着重要的作用,能够提高识别的准确性和效率。
总结:Halcon作为一款强大的机器视觉软件,具有丰富的条码识别功能。
通过对不同类型的条码进行识别,可以实现对产品信息、物流信息等的快速获取和处理。
不同的条码类型适用于不同的应用场景,需要根据具体需求选择合适的条码类型进行应用。
Halcon机器视觉三
Halcon计算机视觉实验(1D条形码检测)⏹实验环境:Windows 7/8/XPHalcon 10.0⏹实验课时:2⏹实验目的:验证性实验,让学生了解识别的整个识别流程,并分析各类参数对于识别结果的影响,学会运用halcon去分析问题,增强对计算机视觉技术中条形码识别了解和掌握。
⏹实验要求:在halcon平台完整测试该部分代码,并分析每行代码,撰写识别过程的实习报告。
包括:识别目的和思路识别中间结果识别的代码及参数的详解实验体会等。
⏹实验内容从硒鼓上读取多个条形码这个例子的任务是从下图中所示的两个条形码。
HALCON运算返回图像中虽有给定类型的条形码。
在每一个寻找到条形码的区域,分别进行解码。
gen_1d_bar_code_descr (’code 39’, 6, 12, BarCodeDescr)find_1d_bar_code_region (image, CodeRegion, BarCodeDescr, [], [],Orientation)fori:=1toNumberby1ObjectSelected:=CodeRegion[i]reduce_domain(image,ObjectSelected,ImageReduced)get _1d_bar_code(ImageReduced,BarCodeDescr,[],[],Orientation[i-1],BarCode)decode_1d_bar_code (BarCode, BarCodeDescr, Characters, Reference,IsCorrect)endfor附录:完整代码:* Read bar codes of type Code 39*create_bar_code_model ([], [], BarCodeHandle)dev_close_window ()dev_open_window (0, 0, 120, 300, 'black', WindowHandle)dev_set_draw ('margin')dev_set_line_width (3)Colors := ['forest green','magenta']set_display_font (WindowHandle, 14, 'mono', 'true', 'false')for I := 1 to 5 by 1read_image (Image, 'barcode/code39/code39'+(I$'.2'))dev_resize_window_fit_image (Image, 0, 0, -1, -1)set_bar_code_param (BarCodeHandle, 'element_size_max', 6)find_bar_code (Image, SymbolRegions, BarCodeHandle, 'Code 39', DecodedDataStrings) dev_display (Image)dev_display (SymbolRegions)get_bar_code_object (BarCodeObjects, BarCodeHandle, 'all', 'symbol_regions')get_bar_code_result (BarCodeHandle, 'all', 'decoded_strings', BarCodeResults)for J := 0 to |DecodedDataStrings|-1 by 1dev_set_color (Colors[J])select_obj (BarCodeObjects, ObjectSelected, J+1)dev_display (ObjectSelected)endfordisp_message (WindowHandle, DecodedDataStrings, 'window', 12, 12, Colors, 'true')if (I < 5)disp_continue_message (WindowHandle, 'black', 'true')stop ()endifendforclear_bar_code_model (BarCodeHandle)dev_set_color ('green')dev_display (FinalNumbers)dev_set_shape ('original')dev_set_line_width (1)dev_set_draw ('fill')** Step2: Readingread_ocr_class_mlp (FontName, OCRHandle)do_ocr_multi_class_mlp (FinalNumbers, Bottle, OCRHandle, RecNum, Confidence) area_center (FinalNumbers, Area, Row, ColNum)set_display_font (WindowID, 27, 'mono', 'true', 'false')for i := 0 to |RecNum|-1 by 1disp_message (WindowID, RecNum[i], 'image', 80, ColNum[i]-3, 'green', 'false') endforclear_ocr_class_mlp (OCRHandle)dev_update_window ('on')。
基于Halcon的一维条码识别技巧
基于Halcon的一维条码识别技巧基于 Halcon 的一维条码识别技巧技巧条码识别halconhub(公丕亮,吕希胜) · 2016-02-06 16:080. 引言对于生产流水线或物流传送带上的产品条码识别,传统的 LED 扫描器识别方法受条码印刷技术、印制材料、条码本身的运动速度和角度的影响,识别率很难提高。
光学成像可提供足够的条码细节配合先进的条码识别算法,因而成为最有潜力的条码识别方法。
本文基于 Halcon 10. 0 开发环境介绍了一维条形码识别的相关算子的基本含义和应用技巧。
1. Halcon 相关函数解读函数框架如下:第 1 步: 模型初始化。
create_bar_code_model( )set_bar_code_param( ) set_bar_co de_param_specific( )第 2 步: 条码识别。
find_bar_code( )第 3 步: 结果处理。
get_bar_code_object( ) get_bar_code_param( ) get_bar_cod e_result( )第 4 步: 清除模型。
clear_bar_code_model( ) 下面做具体介绍。
1.1 create /clear_bar_code_model( ) 算子作为读取条形码的第 1 步,该算子创建一个解析条形码的通用模型。
典型应用是:create_bar_code_model( [],[],BarCodeHandle) 程序完成时,应销毁建立的对象: clear_bar_code_model( BarCodeHandle)1.2 set_bar_code_param( ) 及对应 get_算子( 1) set_bar_code_param( BarCodeHandle,'element _size_min',1. 5) : 条形码的最小尺寸,指条码的宽度和间距。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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)
再重新运行程序,可以发现大功告成,可以稳定的读取条码了。