halcon知识点
- 格式:docx
- 大小:25.66 KB
- 文档页数:7
halcon 数学运算【1.HALCON简介】HALCON(Hardware Abstraction Layer for Control Networks)是一款由德国不伦瑞克大学开发的开源软件,用于嵌入式系统的控制和监控。
它提供了一种硬件抽象层,使得开发者可以编写与特定硬件无关的程序。
在实际应用中,HALCON广泛应用于机器视觉、运动控制等领域。
【2.HALCON数学运算基础】在HALCON中,数学运算主要通过内置的数学函数库实现。
这些函数可以处理各种数学问题,包括算术运算、三角函数、对数、指数、逻辑运算等。
为了方便使用,HALCON将这些函数分为几个类别,如基本函数、统计函数、矩阵函数等。
【3.HALCON中的常用数学函数】以下是一些在HALCON中常用的数学函数:- 算术运算:+、-、*、/、%、^- 三角函数:sin、cos、tan、asin、acos、atan- 对数与指数函数:log、log10、exp、sqrt- 随机数生成:rand、randn- 统计函数:mean、stddev、var、sum、prod- 矩阵函数:矩阵加法、矩阵乘法、矩阵转置、行列式、逆矩阵【4.实例演示】以下是一个简单的HALCON程序,演示了如何使用数学函数:```PROGRAM exampleVARi : INT;j : INT;sum : REAL;product : REAL;matrix1 : MAT(3, 3);matrix2 : MAT(3, 3);matrix3 : MAT(3, 3);END_VARFOR i := 1 TO 3 DOFOR j := 1 TO 3 DOmatrix1(i, j) := i * j;END_FOR;END_FOR;sum := 0;FOR i := 1 TO 3 DOsum := sum + matrix1(i, 1); END_FOR;product := 1;FOR i := 1 TO 3 DOproduct := product * matrix1(1, i);END_FOR;matrix2 := matrix1 * matrix1;PRINT "矩阵1:"; matrix1;PRINT "矩阵2:"; matrix2;END_PROGRAM```【5.总结与建议】HALCON提供了丰富的数学函数,可以帮助开发者轻松实现各种数学运算。
Halcon学习笔记1、Halcon的自我描述Program LogicEach program consists of a sequence of HALCON operatorsThe program can be structured into proceduresThe sequence can be extended by using control operators like if, for, repeat, or while The results of the operators are passed via variablesNo implicit data passing is appliedInput parameters of operators can be variables or expressionsOutput parameters are always variablesHDevelop has no features to design a graphical user interfaceAn HDevelop program is considered as a prototypic solution of the vision part of an applicationHDevelop is typically not used for the final application由此可以看出,Halcon的定位是一个类库,有着完整、快速实现函数,同时提供了HDevelop 作为快速开发的图形化(IDE)界面;但是,Halcon程序并不是一个完整的最终应用软件,它没有用户界面,也不提供显示的数据(公用的数据格式)。
Halcon的初学者也应当从参考Halcon的程序入手,熟悉Halcon类库,也即HDevelop-Based Programming;在此基础上,进入ORClass-Oriented Programming。
HALCON函数介绍HALCON函数介绍(转)sobel_amp( Image : EdgeAmplitude : FilterType, Size : )根据图像的一次导数计算图像的边缘close_edges( Edges, EdgeImage : RegionResult : MinAmplitude : )close_edges_length( Edges, Gradient : ClosedEdges : MinAmplitude, MaxGapLength : ) 使用边缘高度图像关闭边缘间隙。
输出的区域包含杯关闭的区域。
(感觉是对边缘的扩充)derivate_gauss( Image : DerivGauss : Sigma, Component : )watersheds( Image : Basins, Watersheds : : )从图像中提取风水岭。
zero_crossing( Image : RegionCrossing : : )零交点(二次导数)diff_of_gauss( Image : DiffOfGauss : Sigma, SigFactor : )近似日志算子( 拉普拉斯高斯) 。
laplace_of_gauss( Image : ImageLaplace : Sigma : )拉普拉斯高斯edges_color_sub_pix( Image : Edges : Filter, Alpha, Low, High : )精确的亚像素边缘提取(彩色图像)edges_sub_pix( Image : Edges : Filter, Alpha, Low, High : )精确边缘提取的亚像素(灰度图像)edges_color( Image : ImaAmp, ImaDir : Filter, Alpha, NMS, Low, High : )根据颜色进行边缘提取edges_image( Image : ImaAmp, ImaDir : Filter, Alpha, NMS, Low, High : )边缘提取skeleton( Region : Skeleton : : )计算区域的框架Skeleton == Regionfrei_amp( Image : ImageEdgeAmp : : )Frei-chen模板进行边缘检测(振幅)frei_dir( Image : ImageEdgeAmp, ImageEdgeDir : : ) Frei-chen 模板进行边缘检测(振幅和方向)nonmax_suppression_dir( ImgAmp, ImgDir : ImageResult : Mode : )使用方向图像抑制所有的超过给定最大值的图像灰度值的点gen_contours_skeleton_xld( Skeleton : Contours : Length, Mode : ) 将系统框架转换成XLD轮廓laplace( Image : ImageLaplace : ResultType, MaskSize, FilterMask : )使用有限差分计算拉普拉斯变换info_edges( : : Filter, Mode, Alpha : Size, Coeffs )估计滤波器的宽度kirsch_dir( Image : ImageEdgeAmp, ImageEdgeDir : : )使用Kirsch算子计算出边缘(振幅和方向)prewitt_amp( Image : ImageEdgeAmp : : )使用Prewitt 算子计算出边缘(振幅)kirsch_amp( Image : ImageEdgeAmp : : ) 使用Kirsch 算子计算出边缘(振幅)highpass_image( Image : Highpass : Width, Height : )从高频成分提取的图像。
halcon学习笔记1、HsmartWindow 报错问题2、HwindowCtronl绘制图形未结束⼜点击绘制导致错误3、论坛转贴常见问题4、找圆找线部分参数设置5、实现基于形状的模板匹配6、⼀维测量-卡尺7、直线/圆拟合---------------------------------------------------------------- 1-- HsmartWindow 控件除了会调⽤halcondonet.dll外还会调⽤halcon.dll,如果程序根⽬录不存在halcon.dll,则会通过全局变量找到halcon mevtec⽬录去调⽤,这样是没有问题的;如果根⽬录下存在halcon.dll,则会优先调⽤根⽬录下的⽂件,然后halcon.dll内部如果使⽤到HsmartWindow的功能,则还会调⽤⼀个Hcanvas.dll的⽂件,如果根⽬录下没有这个⽂件则会报错,程序编译后启动过程中报错,报错内容为:----------------------------------------------------------------------------------2- HsmartWindow不⽀持Draw开头的函数,只能在Hwindow上⾯画,在执⾏Draw函数的时候,程序停在该函数位置,未点击⿏标右键确认Draw Region之前,程序会⼀直停留,此时再执⾏其他的Draw函数,就会导致在整个流程乱掉,避免这种情况的⽅法是在每个Draw函数之前都调⽤⼀次HalconApi.CancelDraw()函数,结束上次未完成的绘制。
--------------------------------------------------------------------3--以下引⽤ihalcon学习⽹上帖⼦《转“Halcon基本问题解答”》----------------------------------------------------------2. 裁剪图像;从图像上截取某段图像进⾏保存。
t h r e sh o l d 按设置的阙值提取图像区域。
c o n n ec t i on合并所有选定像素触摸相互连通区。
S e l ec t_s h ap e选择区域面积(属性:'面积')在指定区间内。
S m a l le s t_r e ct a n gl e1计算每个区域的坐标(连续/栏)的包围矩形。
dilation_circle ( Region ,RegionDilation , Radius ) 膨胀Radius为半径complement ( Region , RegionComplement )反填充Region区域get_mbutton ( WindowHandle, &Row, &Column, &Button ) 等待至用户鼠标有输入,Row,和Column返回坐标,左键输入:Button=1;中键:Button=2;右键:Button=4set_tposittion(windowhandle,Row,Column)设置文本输出坐标mean_image ( Image : ImageMean : MaskWidth, MaskHeight : )取平均值平滑图像MaskWi dth &MaskHeight ∈ {3, 5, 7, 9, 11, 15, 23, 31, 43, 61, 101}select_region_point (ConnectRegion, OneObject, Row, Column)在连同区ConnectRegion中用坐标选中区域gauss_image ( Image : ImageGauss : Size : )高斯模糊图像,size:3,5,7,9,11sub_image ( ImageMinuend, ImageSubtrahend : ImageSub : Mult, Add : ) ImageSub=(ImageMinuend-ImageSubtrahend)*Mult+Add,增强两幅图像的差异elliptic_axis ( Regions : : : Ra, Rb, Phi ),计算Region区域中的椭圆参数decompose3 ( MultiChannelImage : Image1, Image2, Image3 : : )三通道图像转换为三个图像trans_from_rgb ( ImageRed, ImageGreen, ImageBlue :ImageResult1,ImageResult2, ImageResult3 : ColorSpace : )从一个rgb图像转换为一个任意格式图像difference ( Region, Sub : RegionDifference )计算两个区域的不同,并返回dev_update_pc ( DisplayMode) 设置程序是否总在前面,对置顶有作用(不支持C++代码) dev_update_window(DisplayMode) 默认状态下所有的对象(图像,区域,或XLD)都在活动图形窗口显示。
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(Highly Optimized Computer Vision Algorithms), 是由MVTec Software GmbH公司开发的一款强大的视觉处理软件,为工业自动化领域提供了全面的解决方案。
这种软件广泛应用于制造业、半导体行业、电子产业、医药行业等领域,用于机器视觉系统的开发和部署。
Halcon具有以下几个基本概念:1. 图像处理Halcon是一种用于图像处理的软件,它提供了一系列的图像处理算法和工具,可以对图像进行预处理、分割、特征提取、匹配等操作,以满足各种不同的应用需求。
2. 机器视觉Halcon可以应用于机器视觉系统中,用于进行产品质量检测、物体识别和追踪、三维测量等操作,以提高生产效率和产品质量。
3. 算法优化Halcon提供了高度优化的图像处理算法,可以实现高性能和高效率的图像处理,适用于高速和复杂的生产环境。
特性Halcon具有以下一些重要的特性:1. 高性能Halcon使用了一系列高效的图像处理算法和数据结构,以实现高速的图像处理能力,能够满足各种不同的应用需求。
2. 多功能Halcon提供了丰富的图像处理和分析功能,可以用于多种不同的应用场景,如工业自动化、医疗影像、安防监控等。
3. 跨平台Halcon可以在多种不同的操作系统上运行,并且支持多种不同的开发语言和工具,可以轻松集成到现有的系统之中。
应用Halcon在多个领域都有广泛的应用,以下是一些典型的应用场景:1. 工业自动化在工业自动化领域,Halcon可以用于进行产品质量检测、零件识别和追踪、三维测量等操作,以提高生产效率和产品质量。
2. 医疗影像在医疗领域,Halcon可以用于进行医学影像处理和分析,如医学图像的识别、分割、量化分析等,以辅助医生进行诊断和治疗。
3. 安防监控在安防监控领域,Halcon可以用于进行行人识别、车辆识别、人脸识别等操作,以提高监控系统的识别能力和准确度。
halcon常用英语单词摘要:一、引言二、Halcon 常用英语单词介绍1.基本概念2.图像处理3.机器视觉4.常用函数与操作三、Halcon 英语单词学习方法与建议1.掌握基本单词2.学习专业术语3.动手实践4.参加培训与交流四、总结正文:【引言】Halcon 是一款非常优秀的机器视觉软件,广泛应用于工业自动化领域。
为了更好地学习和使用Halcon,掌握一些常用的英语单词是必不可少的。
本文将对Halcon 常用英语单词进行概括性的介绍,并提供一些学习方法与建议。
【Halcon 常用英语单词介绍】【基本概念】1.图像处理(Image Processing)2.机器视觉(Machine Vision)3.目标检测(Object Detection)4.图像分析(Image Analysis)5.相机(Camera)【图像处理】1.滤波(Filter)2.降噪(Noise Reduction)3.边缘检测(Edge Detection)4.形态学(Morphology)5.图像分割(Image Segmentation)【机器视觉】1.光照(Illumination)2.镜头(Lens)3.图像采集(Image Acquisition)4.视觉算法(Visual Algorithm)5.机器学习(Machine Learning)【常用函数与操作】1.读取图像(Read Image)2.显示图像(Display Image)3.保存图像(Save Image)4.转换图像(Convert Image)5.图像灰度化(Grayscale Image)【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学习经验总结1.图像的开运算和闭运算算子开运算就是用消除图像上的小物体,小区域,将纤细相连的物体分开,将大物体的表面平滑与此同时不明显改变他的面积。
扩大背景(就是暗的部分),缩小前景(就是亮的部分)。
模板匹配等闭运算就是填充物体内细小的空洞,连接邻近的物体,平滑物体的边界同时呢不明显改变他的面积。
缩小背景(就是暗的部分),扩大前景(就是亮的部分)开运算:先对图像腐蚀然后膨胀闭运算:先对图像膨胀然后腐蚀必要的解释:一:HALCON提供了开运算、闭运算的函数(算子),根据结构元素的不同(圆的方的椭圆的或是自己定义也可以)细化出很多算子。
这些都是细枝末节。
此处不再赘余。
二:开闭运算的结构元素没有参考点(中心点)的概念。
三:开闭运算没有迭代的概念,就是图像被同样结构元素做开运算,处理一次和处理随意非零次的效果是一样的。
gray_opening_rect (ImageInvert, ImageOpening, 20, 20)gray_closing_rect (ImageInvert, ImageClosing, 20, 20)connection (ImageOpening,tophat)connection (ImageClosing,bothat)sub_image (bothat,tophat,ImageSub, 1, 0)union1 (ImageSub, RegionUnion)2.击中击不中(hit_or_miss),加厚(thickening),打薄(thinning)thickening:原始图像+ 对图像使用击中击不中产品的图像thinning:原始图像- 对图像使用击中击不中产品的图像击中击不中原理继膨胀、腐蚀、开运算和闭运算之后的有一个基本操作就是击中击不中变换(HMT),HMT变换可以同时探测图像的内部和外部。
在研究图像中的目标物体与图像背景之间的关系上,HMT能够取得很好的效果。
模板匹配1. Shape-Based matching的基本流程HALCON提供的基于形状匹配的算法主要是针对感兴趣的小区域来建立模板,对整个图像建立模板也可以,但这样除非是对象在整个图像中所占比例很大,比如像视频会议中人体上半身这样的图像,我在后面的视频对象跟踪实验中就是针对整个图像的,这往往也是要牺牲匹配速度的,这个后面再讲。
基本流程是这样的,如下所示:⑴首先确定出ROI的矩形区域,这里只需要确定矩形的左上点和右下点的坐标即可,gen_rectangle1()这个函数就会帮助你生成一个矩形,利用area_center()找到这个矩形的中心;⑵然后需要从图像中获取这个矩形区域的图像,reduce_domain()会得到这个ROI;这之后就可以对这个矩形建立模板,而在建立模板之前,可以先对这个区域进行一些处理,方便以后的建模,比如阈值分割,数学形态学的一些处理等等;⑶接下来就可以利用create_shape_model()来创建模板了,这个函数有许多参数,其中金字塔的级数由Numlevels指定,值越大则找到物体的时间越少,AngleStart和AngleExtent决定可能的旋转范围,AngleStep指定角度范围搜索的步长;这里需要提醒的是,在任何情况下,模板应适合主内存,搜索时间会缩短。
对特别大的模板,用Optimization来减少模板点的数量是很有用的;MinConstrast将模板从图像的噪声中分离出来,如果灰度值的波动范围是10,则MinConstrast应当设为10;Metric参数决定模板识别的条件,如果设为’use_polarity’,则图像中的物体和模板必须有相同的对比度;创建好模板后,这时还需要监视模板,用inspect_shape_model()来完成,它检查参数的适用性,还能帮助找到合适的参数;另外,还需要获得这个模板的轮廓,用于后面的匹配,get_shape_model_contours()则会很容易的帮我们找到模板的轮廓;⑷创建好模板后,就可以打开另一幅图像,来进行模板匹配了。
HalCon学习经验总结1.图像的开运算和闭运算算子开运算就是用消除图像上的小物体,小区域,将纤细相连的物体分开,将大物体的表面平滑与此同时不明显改变他的面积。
扩大背景(就是暗的部分),缩小前景(就是亮的部分)。
模板匹配等闭运算就是填充物体内细小的空洞,连接邻近的物体,平滑物体的边界同时呢不明显改变他的面积。
缩小背景(就是暗的部分),扩大前景(就是亮的部分)开运算:先对图像腐蚀然后膨胀闭运算:先对图像膨胀然后腐蚀必要的解释:一:HALCON提供了开运算、闭运算的函数(算子),根据结构元素的不同(圆的方的椭圆的或是自己定义也可以)细化出很多算子。
这些都是细枝末节。
此处不再赘余。
二:开闭运算的结构元素没有参考点(中心点)的概念。
三:开闭运算没有迭代的概念,就是图像被同样结构元素做开运算,处理一次和处理随意非零次的效果是一样的。
gray_opening_rect (ImageInvert, ImageOpening, 20, 20)gray_closing_rect (ImageInvert, ImageClosing, 20, 20)connection (ImageOpening,tophat)connection (ImageClosing,bothat)sub_image (bothat,tophat,ImageSub, 1, 0)union1 (ImageSub, RegionUnion)2.击中击不中(hit_or_miss),加厚(thickening),打薄(thinning)thickening:原始图像+ 对图像使用击中击不中产品的图像thinning:原始图像- 对图像使用击中击不中产品的图像击中击不中原理继膨胀、腐蚀、开运算和闭运算之后的有一个基本操作就是击中击不中变换(HMT),HMT变换可以同时探测图像的内部和外部。
在研究图像中的目标物体与图像背景之间的关系上,HMT能够取得很好的效果。
工业机器视觉基础教程-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的关键知识点。
1.Halcon基础知识 Halcon是一种面向对象的编程语言,具有强大的图像处理能力。
它支持多种图像格式,并提供了丰富的图像处理函数和算法。
要使用Halcon,首先需要了解其基本语法和函数的使用方法。
2.图像输入与输出在Halcon中,图像可以从文件中读取或通过相机进行采集。
要从文件中读取图像,可以使用read_image函数,该函数接受图像文件的路径作为参数。
要将图像保存到文件中,可以使用write_image函数,并指定保存路径和文件格式。
3.图像预处理在进行图像处理之前,通常需要对图像进行预处理,以提高处理的效果。
Halcon提供了丰富的图像预处理函数,包括图像平滑、增强、滤波等。
常用的预处理函数包括gauss_filter、median_image和enhance等。
4.图像分割与特征提取图像分割是图像处理中的一项重要任务,它将图像分割成具有不同特征的区域。
Halcon提供了多种图像分割算法,例如阈值分割、边缘检测和区域生长等。
完成图像分割后,可以使用特征提取函数获取每个区域的特征,如区域的形状、大小和颜色等。
5.目标定位与匹配目标定位是在图像中找到感兴趣的目标位置。
Halcon提供了多种目标定位算法,包括模板匹配、形状匹配和关键点匹配等。
通过设定合适的模板或特征描述子,可以在图像中准确地定位目标位置。
6.二维码和条形码识别在许多应用中,需要对二维码和条形码进行自动识别。
Halcon提供了方便的函数和工具,用于解码和识别不同类型的二维码和条形码。
通过使用相应的函数,可以实现快速而准确的二维码和条形码识别。
7.三维视觉与立体匹配除了二维视觉外,Halcon还提供了强大的三维视觉功能。
1.无论读入什么图像,读入图像显示效果明显和原始图像不一致,哪怕是从相机读入的图像,也是明显颜色差异。
什么原因引起?初步诊断是,显示的时候调用的颜色查找表存在异常不是default,而是其它选项。
此时可以通过查阅相关参数,调用set_system解决,也可以在编辑-》参数选择-》颜色查找表进行更改。
2.裁剪图像;从图像上截取某段图像进行保存。
如何实现该操作?首先应该知道,region不具有单独构成图像的要素,他没有灰度值。
有用过opencv的应该知道ROI(感兴趣区域),设置好它后,对图像的大部分操作就转为图像的一个矩形区域内进行。
类似的,halcon有domain概念。
首先设置好一个矩形区,然后使用reduce_domain(是一个矩形区域)后,再使用crop_domain就裁剪出图像。
3.读入bmp,或tiff图像显示该图不是bmp文件或不能读。
原因是什么?这个常有新手询问,画图,图像管理器都能打开,又或者是相机采集完直接存到硬盘。
Halcon读取图像在windows下面到最后是调用windows库函数实现读图功能。
咱不清楚到底是怎么调用的。
对于图像格式,在读图函数F1说明很细。
基本bmp如果文件头不是bw还是bm(百度百科bmp格式查找,编写此处时无网络,后续可能忘记),就读不进来。
其他规格欢迎补充。
解决办法,如果是相机采集,就在内存直接转换(参见halcon到里面的halcon和bitmap互转);如果是采完的图片,大部分通过画图工具转换为24位bmp格式,即可解决。
4.读入avi文件报错。
Halcon通过directshow或另一个格式解析视频,正常来说应该可以读入市面大部分视频,实际测试发现只能读入最标准的avi文件格式。
如果需要临时处理,需要下格式工厂等工具转化为最标准的avi文件格式(论坛叶诺有发帖说明)。
5. Region或xld筛选。
Halcon提供了丰富的region和xld筛选方法。
Region可以使用select_shape_xld,选择出符合要求的区域,如果不能满足还可以通过类似region feature这样关键字组合成的算子获取区域特征,然后通过tuple排序或相加减,再通过tuple_find确定是对应哪个区域的特征。
同样的halcon也提供了select_contours_xld进行轮廓筛选。
6. Halcon分几类对象,每个类的功用是?Halcon总分俩大类,tuple和图标对象obj。
Tuple涵盖了对所有基础数据类型的封装,可以理解为她是halcon定义的数组类。
Obj是alcon定义图标类基类。
衍生出了许多类型,其中Region,Xld,Image其中最主要的类型。
7. F1说明,参数部分-array是什么意思?该符号说明,该参数接受一组输入,对tuple就是一组tuple,对obj就是通过concat_obj或其它操作产生的一组obj元组。
8.俩个相对方形物体的距离计算。
如果这俩个物体和背景对比清晰,最近的距离在俩条边下则可以再预处理之后进行如下操作:1. Segement_contours_xld分割边缘线段(edgeXXXX等得到的边缘);2. select_contours_xld选择出特定的长度或方向边缘;3.假设此时刚好获取俩条线,则可以利用distance_ll,求得距离,也可以自己fit_lineXXXX拟合直线再求距离;以上是一种方法,另一种常见方法是利用measure_pos或measure_pair进行测量,不熟悉的可以翻看示例或者使用测量助手进行测量。
9.创建过程或函数,或者全文编辑。
在算子编辑窗口,main所在行右边,有四个按钮,将鼠标移到该位置,将有中文提示,按提示点击按钮。
10.从其它halcon环境窗口复制函数或算子复制到新建的halcon窗口,无法使用,提示不识别。
除了敲错,此种情况都是由于该函数式本地或全局函数,而不是halcon算子。
确定的方法:注意该算子颜色然后去编辑参数选择查看该颜色代表的算子属于什么类型函数。
亦可以直接右键,如果有查看函数。
为黑色可点击,这种情况也是本地或全局函数。
解决方法:如果是全局函数,可以在halcon目录下面找到该函数,加载到新窗口就行;也可以新建输入输出一致的过程,将代码复制过来,然后使用。
本地函数只能使用后一种方法解决。
11. 64位系统,VS2010及以下版本报error LNK1112:模块计算机类型”X86”与目标计算机类型”X64”冲突。
问题原因是默认情况,halcon在64位系统会自动安装64位halcondll,并且添加到环境变量;而vs一般是默认X86编译环境,俩者dll库不一致,换句话说是底层机器指令不一致。
解决办法是将编译环境设置为64位,详见百度;或者再次安装halcon选择32位dll,并修改环境变量VC++路径为32位库路径,bin指向32位dll路径。
12. 64位系统,VS2012。
无论怎么更改库文件,头文件,名空间,最好的提示也是找不到函数定义。
反复出现,无法解决时,有可能是问题11所述问题,解决办法见11.至于为何不提示errorLNK1112,可能是VS更改了前面检测等级,在编译阶段就拦截到错误。
应该说是更先进了,只是比较不合情理。
13.如何查找halcon算子?Halcon算子命名大部分所见即所得,也就是如果你记得你要找的算子汉字名称,输入到翻译器得到英文单词,在F1的算子分栏从头开始输大部分能找到一些算子,这时候再点击进去注意算子功能解释,懂了是自己要的就拿起来到例程搜索示例,查阅功能;不懂就看说明部分;再不懂进群问。
另外,对于近半算子是按动作_类型/目标_属性命名。
Obj是region,xld,image的父类,后三者找不到的算子可以输入obj查找。
14. Halcon相等,不等于,异或,或等操作符。
直接在F1出来的分栏输入operation,查找可得。
15.在halcon环境使用get_grayval进行像素操作太慢,如何加速?注意到halcon环境是解释执行,get_grayval可以一次获取多个,可以预先把行数据存入一个tuple对象,存一次以后可用多次。
因此提速方法,建议事先创建好行tuple (用tuple_add加一,即可实现所有行加一),列的tuple数组(创建好可以用多次)。
这时每次再调用get_grayval,速度将显着提升,因为节省了逐行解释时间。
注意:如果导出到VC,则建议用get_image_pointer获取指针进行操作。
16.从一组region或xld,image中获取单个对象,或多个halcon同类对象构成-array元组。
select_obj负责从多个对象的元组选出指定序号对象;concat_obj执行将俩个对象(或元组)链接成一个对象元组。
17.更改halcon颜色查找表,显示不同颜色空间。
在编辑参数选择颜色查找表进行更改;也可以在F1输入lut进行查找设置函数。
18.创建空对象,空Region,空数组。
gen_empty_obj创建空的对象;gen_emtpy_region创建空数组;halcon环境中tuple用:=[]。
19. Region和xld互相转化;多边形创建xld;直方图,直线,点集,多边形,行程编码创建region。
Halcon里对象之间的相互转换,一般可以转化为gen_目标对象_源对象形式。
如:gen_region_contour_xld使用xld创建一个region;gen_contour_region_xld从区域region创建一个轮廓xld。
直方图histo;直线是line,点集是points,行程编码runs,黑森线hline,多边形polygon。
按照上面格式进行查找。
20. Halcon伪彩色可以参照冈萨雷斯伪彩色章节。
21. Halcon角度分布22.判断Region是否为空?首先一般region是多个region存在一个regions变量里面。
所以先使用count_obj获得有多少个obj;然后使用select_obj,选出一个区域处理;接着使用area_center,VC可以使用()!=H_EMPTY_REGION判断是否为空。
23.新手入门书籍?首推《机器视觉算法与应用》,这本书前面更多的是阐述一些通用的机器视觉经验,后面有跟示例,代码为,实际使用可能会有部分函数已经被抛弃使用;其次,冈萨雷斯绿皮书《数字图像处理》,介绍内容丰富,全面,但是可能讲得比较深,没有实际实践或再找资料展开会比较,常读不深入。
是数字图像处理基础理论不可多得的书籍。
24.用halcon调用halcon支持的品牌相机,使用相机自带的厂家软件可以发现相机,可是halcon总是提示:图像获取设备未初始化。
这是为什么?把对应品牌的相机配置文件加到采集助手的使当前halcon调用的相机参数与厂家软件一致;再确保相机驱动,采集卡驱动安装完毕。
25.屏幕/窗口截图。
使用dump_window_image保存对应窗口截图,截图为当前肉眼所见图像,包括已经绘制到图像上的region,xld等。
26.导出halcon 11代码为C++代码,经常提示不识别,或者名空间名字没找到。
解决办法是什么?首先halcon11导出如果没有勾选10,默认产生的C++代码,对应的主要头文件是和using namespace HalconCPP。
配置如下头文件#include “” ,代码在导出时已经自动生成。
using namespace HalconCPP;代码导出时已经自动生成。
在VC++目录,配置include路径,一个是默认Halcon安装文件夹下面的include,另外一个根据你导出的代码而定,上面是halconCPP,所以对应添加include文件夹下面的HalconCPP文件夹到路径里面。
此外配置将安装文件夹下的lib添加到库文件目录。
最后将添加到库的依赖项。
注意此处要一句导出代码而定,上述导出的是halcon -C++代码,所以是此处添加该项。
27.标定助手的“平均误差”是指什么?这个平均误差的计算是按如下方式:1.计算标定板图像的标志点位置,此处记为Mark1;2.标定结束后,将标准标志点,按照得出的转换矩阵,进行转换得到Mark2;3.由于可以得到Mark1和Mark2点之间对应关系,点对应相减,绝对值累加(此处累加方式请具体查标定程序查找具体平均误差计算函数,很久,已记忆不详),然后除以标志点数目。
4.此时得到的就是平均误差。
28. Halcon参数函数里面的四个冒号(::::)是什么意思?四个冒号按照参数类型和输入输出不同进行了分隔。
从左到右依次是(输入的obj对象:输出的obkj对象:输入的控制变量:输出的控制变量)。