无锡伶俐科技
工程师创业,有团队;
12年工作经验,当前做工业视觉和工控软件;
抖Y:伶俐科技
展开
-
HALCON reference_hdevelop翻译Chapter1 1D Measuring(二)
fuzzy_measure_pairing和算子fuzzy_measure_pairs几乎是一样的,提取边缘对的方式由Pairing这个参数决定,返回边缘的对数可以设置参数NumPairs,例如设置10个边缘对,那么匹配值最高的10对会被返回,如果设置成0,那么会返回所有边缘对。需要注意的是,此算子只返回有意义的结果,也就是前提条件是提取的边缘对是垂直的并且垂直于测量主轴,不能是弯曲的边缘对。当执行这个算子的时候,如果使用多个线程的时候,对上面这个参数的访问必须同步。多线程类型:重入(并行运行)原创 2022-11-08 17:02:23 · 1205 阅读 · 3 评论 -
HALCON reference_hdevelop翻译Chapter1 1D Measuring(一)
通过1D测量检测通过预先设定的线和弧形来定位边缘,边缘可以是从白到黑,也可以是从黑到白。1D测量算子可以很快速并且高精度的测量零件尺寸,需要注意的是,如果我们测量的图形是类似于圆,椭圆,长方形,或者是线之类的几何图形时,我们要使用ROI去获取需要测量位置的大致坐标和角度。图1是算子沿直线测量边缘距离,图片来源于halcon例子fuzzy_measure.hdev。图2是算子沿弧形测量边缘距离,图片来源于halcon例子measure_ring.hdev。原创 2022-11-03 15:48:32 · 910 阅读 · 0 评论 -
HALCON联合C#机械手视觉定位——初始化(二)
下一步定义和初始化窗口,我们有几个相机就定义几个窗口,这里我定义两个窗口,相机窗口和设置窗口。上一篇初始化了tabControl控件的item。初始化中添加窗口初始化。原创 2022-09-08 20:52:14 · 2034 阅读 · 4 评论 -
HALCON联合C#机械手视觉定位——初始化
我们放两个tabControl控件,主界面的控件是在tabPage1中,设置界面我们放在tabPage2中,如果有PLC的控制,我们可以放在tabPage3中。我这里的第三方控件特指的是美化控件。tabPage2中,我们放第二个tabControl控件,新建四个页面,分别为程序设置,相机设置,模板设置,系统设置。设置界面的控件如下图所示,大家更具图片自己去配色和设置,把设置界面的所有控件布局好即可。初始化中一般我们会写,相机的打开,关闭,PLC的连接建立,界面的控件初始化等。...原创 2022-08-29 08:39:40 · 1759 阅读 · 2 评论 -
HALCON联合C#机械手视觉定位——界面代码
后面几篇和大家聊一聊机械手视觉定位系统,为了好理解我们从零开始一步一步的创建视觉定位系统软件,相机采集的方式使用最前面几篇的SDK。首先机械手定位我只讨论项目中最经常使用的两种。第一种是相机固定在机械手上的;第二种是相机不固定在机械手上;第一种,相机固定在机械手上,这种方式相机的坐标系是在机械手的坐标系内的,严格的说相机给的是偏移值,不是绝对坐标。第二种,相机不固定在机械手上,分为两种模式,第一种和上面一张,相机给偏移坐标,第二种,相机给绝对坐标。......原创 2022-08-25 10:48:02 · 2899 阅读 · 2 评论 -
HALCON联合C#检测表面缺陷——ROI交互(四)(和图片同步缩放裁剪等功能)
这只是实现ROI交互的其中一种简单方式,还有其他的方式,例如封装函数使得矩形后期可以调节大小等,我们后面有机会再讨论。没有问题,当我们需要修改时,只需要读取ROI,剪切或者附加即可。...原创 2022-07-17 11:09:40 · 1100 阅读 · 8 评论 -
HALCON联合C#检测表面缺陷——ROI交互(三)(和图片同步缩放裁剪等功能)
附加也就是使用Union2函数合并两个区域。实现常规,附加,裁剪的实现,三个勾选每次只能勾选一个并且只能有且一个。矩形2和圆的实现方法是一样的,我们下一篇继续。常规的Checked属性设置位True,默认常规是勾选上的。在常规模式下,先画一个矩形,然后在附加模式下再画。没有问题,然后按照上面的方式我们再添加裁剪功能。在常规模式下,先画一个矩形,然后在裁剪模式下再画。点击刷新按钮后,我们看到从新加载了图片和ROI。我们把矩形的裁剪功能和附加功能加上。今天我们继续实现剩下的功能。之前这里是常规的方法,...原创 2022-07-15 21:00:24 · 859 阅读 · 1 评论 -
HALCON联合C#检测表面缺陷——ROI交互(二)(和图片同步缩放裁剪等功能)
添加每个按钮功能首先添加矩形1按钮功能函数,在写方法的时候我们需要注意添加如下三个条件 矩形1代码如下 运行先测试一下我们发现报错了,因为camImage是空的,没有图片所以,我们需要修改一下readSourceImage函数 修改如下如果大家熟悉C#的方法风封装应该知道修改后的方法和修改之前的区别,这里大家如果不熟悉,再看一下C#的函数参数等定义。再次运行 然后我们添加图片的缩放功能,这样我们才能看ROI是否跟随图片缩放 运行测试一下我们发现区域没有同步缩放,因为我们在缩放图片的时候,没有同步读取RO原创 2022-07-14 11:26:34 · 714 阅读 · 0 评论 -
HALCON联合C#检测表面缺陷——ROI交互(一)(和图片同步缩放裁剪等功能)
前面我们已经说了ROI的基本交互,但是ROI不能和图片同步缩放,这一篇我们来优化一下ROI的交互功能,我们从新建一个新的项目,在新的项目里我带大家来做一下。大家做好之后可以再移植到自己的检测框架中。ROI的交互实现方式有很多中,我这里暂时介绍一种,使用文件读写的方式来实现。我们在画ROI的时候,我们可以保存ROI到本地,然后缩放图片的同时,再把ROI读取显示到图片上即可实现ROI同图片的一同缩放。新建一个C#项目引用halcon的DLL文件 工具箱中添加项 添加按钮如下 矩形1:画普通的矩形,不带角度矩形2原创 2022-07-13 17:07:23 · 2340 阅读 · 0 评论 -
HALCON联合C#检测表面缺陷——HALCON例程autobahn
前面的文章我们讨论了最基本的框架原理,大家如果想看哪一方面的知识可以留言,我在专栏中来说一说。这段时间我打算分享一下HALCO的一系列例程。我们在检测中很多时候都无从下手,原因很简单我们积累的算子太少了。HALCON的算子很多,我们需要慢慢积累然后活学活用,运用不同的组合来解决实际问题。大家可以打开例程autobahn这例程使用了方法是blob分析方法,这里的关键算子如下上面的几行代码就是这个例程的关键地方。我们下面一行一行来看1.从新打开一个窗口2.设置参数3.生成网格 从定义可以看出是生成一个,Widt原创 2022-07-02 15:14:30 · 3031 阅读 · 2 评论 -
HALCON联合C#检测表面缺陷——视觉检测浅谈
今天和大家浅谈一下工业视觉检测,纯属个人见解。做了很多年视觉检测,总会有一些或多或少的感悟1.大家在学习之前首先要弄明白,你具体的目的是什么,就像大家来购买这个专栏一样,你的目的一定要清楚,你想在这个专栏得到什么。如果你的期望是购买这个专栏,学习之后你就可以天下无敌了,对不起,这个专栏做不到:这个专栏只是对你的一种提升,可能之前你的功力是3级,学习这个专栏后你的功力能提高到5级。只是拿这个专栏做个例子,大家学习网上或者线下的培训都要清楚自己的预期和目的。如果漫无目的的去学习各种课程,可能到最后还是很难做好项原创 2022-06-16 10:56:23 · 1962 阅读 · 2 评论 -
HALCON联合C#检测表面缺陷——仿射变换(三)
这个系列的专栏不是直接给代码的,这点我需要声明一下,主要是提供搭建视觉检测软件的思路,告诉大家如何编程,如何实现检测,文章中涉及的代码不是唯一的,只是示例,大家可以举一反三。上一篇讨论了旋转矩阵,这一篇我们在旋转矩阵的基础上添加偏移矩阵。但是这样一步一的使用矩阵是有点麻烦的,所以今天介绍一个能够同时完成旋转和偏移的函数Row1,Column1,Angle1是初始坐标和角度Row2,Column2,Angle2是需要旋转到的坐标和角度所以修改代码如下运行测试 检测区域随着模板的位置和角度发生了变化做到这里我们原创 2022-06-11 10:26:05 · 589 阅读 · 4 评论 -
HALCON联合C#检测表面缺陷——仿射变换(二)
我们上一篇说了模板匹配,我们先来说仿射变换,回头写代码的时候我们再把模板匹配给封装起来。打开HALCON软件,我们看一个例子。 打开集几何转换中的affine_trans_region代码如下:上面这个示例的重要代码如下,这几段代码就是我们在模板匹配后,获取旋转角度和X以及Y 的偏移量来生成矩阵,然后利用矩阵来旋转偏移区域hom_mat2d_identity (HomMat2DIdentity)hom_mat2d_rotate (HomMat2DIdentity, -0.3, 256, 256, Hom原创 2022-06-10 16:20:26 · 737 阅读 · 1 评论 -
HALCON联合C#检测表面缺陷——仿射变换(一)
前面我们说到了模板匹配中的形状匹配,后面有机会我们再说其他的模板匹配,我们先说一下,仿射变换。说到仿射变换。我们先来复习一下模板匹配的意义是什么?它是为仿射变换提供依据,模板匹配是建立坐标系,仿射变换是把区域根据坐标系偏移和旋转到我们需要的位置下图左边启动位置修正,即使用仿射变换;右边未启用位置修正,即未使用仿射变换。牛头是模板,我们可以认定牛头中心就是坐标原点,牛头旋转偏移了多少,那么顶部的方形区域也应该旋转偏移多少。通过上面的解释,我想大家对于仿射变换有了初步的了解。中间的篇原创 2022-05-17 14:57:18 · 1245 阅读 · 4 评论 -
HALCON联合C#检测表面缺陷——光源选型(三)
选光源的一般过程1、了解项目需求,明确要检测或者测量的目标;2、分析目标与背景的区别,找出两者之间成像差异最大的光学现象;3、根据光源与目标之间的配合关系,初步确定光源的发光类型及颜色;4、拿实际光源测试,以确定满足要求的打光方式;5、根据具体情况,确定适用客户的产品。如果客户或者公司不是很敏感的话,大部分光源供应商都能提供打光测试服务,毕竟我们手上的光源没有那么全,光源供应商都会有实验室,提供打光测试项目,。我们这里以OPT光源为例,大致来看看光源以及控制器的选择首先打开OPT的官原创 2022-05-12 15:25:01 · 482 阅读 · 0 评论 -
HALCON联合C#检测表面缺陷——光源选型(二)
这一篇我们继续说关于光源的选型光的直线传播光的传播定律:光在同种均匀介质中沿直线传播。光的反射反射定律:反射光线与入射光线、法线在同一平面上,反射光线和入射光线分居在法线的两侧,反射角等于入射角。光的折射折射定律:其中i为入射、i'为折射角、n1和n2分别为界面两侧物质的折射率。sini/sini'=n2/n1光的散射 光线照射到微小构造(颗粒、小坑等)时,不再严格遵循反射和折射等规律,其能量将以散射点为中心,杂乱无章地向四周发射出去,这种现象称...原创 2022-05-12 15:07:14 · 2619 阅读 · 0 评论 -
HALCON联合C#检测表面缺陷——光源选型(一)
光源的作用机器视觉系统的核心是图像的采集和处理。所有信息均来源于图像,图像的质量对整个视觉系统极为关键。一幅好的图像可以提高整个系统的稳定性,从而大大降低图像处理算法的难度,同时提高系统的精度和可靠性,合理有效的照明方案尤为重要。一幅好的图像应该具备如下条件 1. 对比度:对比度明显,目标与背景的边界对比清晰,要求目标与背景灰度值至少相差30以上; 2. 均匀性:要求图片整体亮度均匀,或整体不均匀但灰度差不影响图像处理; 3. 真实性:...原创 2022-05-12 14:18:11 · 615 阅读 · 0 评论 -
HALCON联合C#检测表面缺陷——相机选型(三)
如果需要选择某个品牌的相机,我们第一件事就是到该品牌的官网上,了解该品牌相机系列的相同点和不同点。我以海康品牌为例,打开海康机器人官网在相机产品中,有好几个系列,其他品牌也是一样,不同的系列,主要有以下几点不同。1.面阵相机:经济型,大面阵,USB接口,千兆网口等2.线扫相机3.嵌入式相机4.特殊相机,例如红外相机例如CH系列工业面阵相机,是属于高端型,高分辨率面阵相机,覆盖500万-6.04亿像素,同时满足高分辨率、高帧率需求。具备风扇或TEC制冷型号,满足不同应用环.原创 2022-05-12 13:35:48 · 2827 阅读 · 0 评论 -
HALCON联合C#检测表面缺陷——相机选型参数(二)
面阵相机的参数感器尺寸 即靶面尺寸,面阵相机以芯片的 对角线长度来度量;线阵相机以芯片的横向长度来度量。工业上,面阵相机常用的传感器尺寸如下表,实际尺寸略有差异。 芯片 水平H (mm) 垂直V (mm) 对角D (mm) 1" 12.8 9.6 16.0 2/3" 8.8 .原创 2022-05-11 16:41:53 · 328 阅读 · 0 评论 -
HALCON联合C#检测表面缺陷——相机选型(一)
这一篇我们聊一聊相机的工作原理,下一篇我们再谈关于选型的问题。前几篇我们说的是镜头的选型,在实际使用中,我们选择硬件的时候,一般是先确定检测方案,是使用线扫相机还是面阵相机?是使用微距镜头还是远心镜头?确定好后,我们再来确认需要的检测精度和视野,从而判断使用500万还是1200万相机,根据相机的分辨率和视野可以求出镜头的焦距,从而选择合适的镜头。机器视觉相机概述相机的主要功能是采集图像。较早的相机称为模拟相机,需要配合图像采集卡使用,通过采集卡将模拟电信号转换成数字电信号,再传送至电脑。随着原创 2022-05-11 16:12:03 · 1179 阅读 · 0 评论 -
HALCON联合C#检测表面缺陷——镜头配件
在实际应用中,为了适应各种使用需求,镜头通常会搭配配件产品。例如,延长管,转接圈,滤光片,偏振片,棱镜等。一,延长管◆延长管可在工作距离小于镜头的最小工作距离的情况下使镜头可以聚焦,几乎不改变镜头视角,通常安装在镜头与相机接口之间;◆一般情况下,延长管安装数量不宜超过镜头焦距的1/5,变倍镜头和其他特殊镜头不建议加延长管,影响图像质量。简而言之,就是如果你的镜头最小工作距离是200mm,但是你就是需要使用这款镜头,并且想实现工作距离达到150mm,这个时候使用延长管即可。二,转.原创 2022-05-11 15:53:27 · 287 阅读 · 0 评论 -
HALCON联合C#检测表面缺陷——镜头的选型(二)
镜头分类镜头有多种分类方法:按功能分类:定焦镜头、变焦(倍)镜头、定光圈镜头;按用途分类:远心镜头、FA镜头、线扫镜头、微距镜头(或者显微镜头);按视角分类:普通镜头、广角镜头、远摄镜头;按焦距分类:短焦距镜头、中焦距镜头、长焦距镜头。工业应用中,最常用的镜头为定焦镜头和远心镜头。定焦镜头指固定焦距的镜头;远心镜头(Telecentric)主要是为纠正传统镜头的视差而特殊设计的镜头,它在一定的工作距离范围内,所得图像的放大倍率不随工作距离的变化而变化,即被测物在不同工作距离下,所成像的原创 2022-05-11 15:36:37 · 323 阅读 · 0 评论 -
HALCON联合C#检测表面缺陷——镜头的选型(一)
我打算在这个专栏中穿插的说一些硬件上的问题,很多现场的检测问题,有时候不仅和代码有关,还和硬件有关。镜头的成像原理镜头的成像以凸透镜成像的原理为基础,透过透镜的组合,把物体发出或者反射的光线成像在相平面上(与芯片面重合)。运用凹凸透镜的组合能有效的平衡球差,轴外像差,色差等各种像差,提高成像质量。技术指标介绍1.焦点/焦距与光轴平行的光线射入凸透镜时,理想的镜头应该是所有的光线聚集在一点后,再以锥状扩散开来,这个聚集所有光线的点叫焦点。对于单透镜来说,焦距是指从光心到焦点原创 2022-05-11 14:10:32 · 594 阅读 · 0 评论 -
HALCON联合C#检测表面缺陷——基于形状的模板匹配设置流程(三)
上一篇文章我们遇到了一个问题,就是金字塔层数的问题,我们查询后发现,CreateShapeModel中我们可以使用“auto”,而在FindShapeModel中我们,金字塔层数不能设置为auto,可以设置为0;0的含义和auto是一样的。我们修改代码,然后再次运行(在写程序的过程中发现的问题越多,我们能够学到的也会越多,所以只要发现问题,我们就按照一定的思路去解决,以后即使再出现问题,我们不一定立马知道问题是什么,但是我们至少知道用什么思路来排查)...原创 2022-05-11 10:55:41 · 885 阅读 · 5 评论 -
HALCON联合C#检测表面缺陷——基于形状的模板匹配设置流程(二)
我们接着上一篇来完善模板匹配界面的代码原创 2022-04-29 14:01:10 · 1271 阅读 · 10 评论 -
HALCON联合C#检测表面缺陷——基于形状的模板匹配设置流程
接上一篇文章,上两篇文章我们把匹配助手中生成的代码导出到C#文件,导出的过程如果有不清楚的可以给我留言。上一节我们也说过,代码是分为两个部分的,前一部分是设置模板,后一部分是检测流程。这里多说两句,几乎所有的检测,我们都可以分成两个部分,一部分是设置参数和设置检测区域;第二部分就是读取参数,读取检测区域以及调用检测算法。如果是多个相机,建议大家把检测算法封装成一个方法,这样所有相机都可以共享调用一个方法,还有一个更大的优点就是如果多相机是使用同一个方法的,我们只需要修改一处就可以了,不用修改原创 2022-04-26 18:08:07 · 1384 阅读 · 0 评论 -
HALCON联合C#检测表面缺陷——模板匹配find_shape_model(二)匹配助手
继续上一节的内容,第一个参数是输入图像,第二个参数是模板,这个模板就是create_shape_model中的最后一个输出参数;第三个参数和第四个参数和create_shape_model中的角度一样;第五个参数是最小分数,也就是匹配ModelID的时候我们判定当前找到的基准和我们创建的基准的相似度,相似度越高,找到的难度也就越大,相似度越低,找到错误的几率也就越大,所以一般这个值我们设为0.5到0.8;numMatches是匹配的时候需要返回的模板个数,比如算子在找模板的过程中,我们设置m原创 2022-04-24 10:28:22 · 996 阅读 · 0 评论 -
HALCON联合C#检测表面缺陷——模板匹配create shape model(一)匹配助手
上一篇文章我们讨论了模板匹配的意义,为什么要用到模板匹配,我再拿一个例子说明一下,如下图启动位置位置修正就是使用了模板匹配,未启用位置修正就是没有使用模板匹配,牛头是定位基准,也就是我们使用create shape model创建的模板,运行时因为图片会随机旋转和偏移,因此运行时使用find shape model找到牛头,然后把我们的检测区域,也就是下图的上面的绿色方框,通过基准我们知道图片的旋转角度和位置偏移,那么我们就把检测区域也旋转图片旋转的角度,偏移图片移动的位置就行可以了,如果不使用原创 2022-04-23 12:21:11 · 4111 阅读 · 0 评论 -
HALCON联合C#检测表面缺陷——模板匹配的解释和原理
从这一篇文章开始,我们就进入一个新的话题讨论,在前面的章节中我们做表面缺陷检测发现有一个问题:在实际的检测过程中,每一次产品不可能在同一个位置,那么我们的检测区域如何跟随产品的位置和角度的变化而变化呢?这个就值得我们思考。这里我提醒一下大家,最好理解了前面的文章再来看后面的以及这一篇文章,因为文章之间存在一定的连续性所以检测中就提出了一个概念,模板匹配。这一篇文章只是作为后面文章的引子,讨论一下模板匹配的原理和作用,它是干什么的,怎么使用,什么情况下使用。我们探讨这几个问题。在这里我也要原创 2022-04-13 23:38:49 · 2370 阅读 · 4 评论 -
HALCON联合C#检测表面缺陷——判断NG个数以及保存NG图片
上一章节我们说到了读取在检测的时候读取ROI以及判断NG,这一篇文章我们来讨论下,判断NG的个数以及保存NG图片上一章节中我们使用阈值算子Threshold去判断NG,我们的取值范围时0-100,然后紧接着我们没有判断直接写出了下面的代码,就是如果又NG,那么就显示红色,其实这里我们是需要做出判断的。我们先模拟一下,我们把阈值里的参数修改下,改成0-255,运行测试一下我们发现,圆圈变红了,是因为检测到了NG,因为灰度图像的灰度值是0-255,所以我们直接把整个范围都当作了NG,这里因.原创 2022-04-02 22:55:52 · 1266 阅读 · 2 评论 -
HALCON联合C#检测表面缺陷——检测流程读取ROI和参数运行算法判断OK和NG(二)
上一节中我们优化了路径,实现了读取本地图片,这一篇文章我们优化下检测代码,代码执行部分,代码执行部分需要读取我们之前检测画的ROI,所以方法中需要再 添加一个路径参数对于初学者,这里可以先暂停写后面的代码,先把检测方法带入到图片读取方法中,我们先把读取的ROI显示在界面上我们带入图片读取方法中运行测试我们看到,之前我们保存的ROI就被读取并显示到界面上了,这里我们的显示方式是margin我们也可以显示成fill运行测试...原创 2022-03-22 11:39:19 · 1338 阅读 · 4 评论 -
HALCON联合C#检测表面缺陷——检测流程读取ROI和参数运行算法判断OK和NG(一)
上一篇文章我们讨论了设置流程,保存ROI和参数到本地对应文件夹中,这一篇主要讲解检测流程。对于之前的文章大家如果有什么疑问,可以留言给我,我会在后面的文章中解答。之前有留言说关于其他品牌相机SDK的开发有没有案例,我想说的是,我只写了basler和海康的相机SDK开发,其他品牌的相机也是一样的流程,先从官网下载对应的SDK开发包,然后在我按照我写的这个开发流程来修改就可以了,当然如果确实有困难,可以留言,到时我再增加一篇。还有留言关于WPF开发视觉检测框架的能否讲解一下,等本专栏说完之后,我..原创 2022-03-15 09:31:04 · 1353 阅读 · 5 评论 -
HALCON联合C#检测表面缺陷——表面检测设定流程以及保存ROI
大家在看文章的时候,如果有不懂的可以给我留言。我看到后,会及时回复,我要声明的是我不是培训班,我也不靠这个赚钱养家,本人是公司的研发工程师,所以在遇到问题的时候,确实也会忙到很晚,不能及时的更新,很抱歉。我在写文章的时候,我也会根据大家留言来做改动,如果大家普遍对于一个问题不是很懂,我会在这个专栏中插入一篇来讲。有人留言说关于缩放ROI时,ROI会消失,首先其实并不是ROI消失了;缩放图像时,图像刷新了显示,ROI没有及时刷新显示,但是ROI还是在的,只是没有显示出来,所以只是没有显示,我们只需要利原创 2022-03-12 14:20:22 · 5730 阅读 · 5 评论 -
HALCON联合C#检测表面缺陷——不同程序切换的思路
首先说一句抱歉,因为本人不是专业做培训,只是一个上班族,所以有时更新会不及时,因为本人的工作是跟着项目走,所以有时候项目比较忙,没有时间更新,后面我们尽量每周更新一篇。在上一篇中我们检测的基本思路如下1.读取图片2.画出ROI,ROI就是感兴趣区域,也就是你你想检测的区域,在检测的时候会剪切出我们画的ROI,然后在ROI内查找缺陷。3.使用blob分析方法提取缺陷4.在窗口上显示缺陷创建检测区域,如果是在C#中,我们在上面的思路基础上来完善下我们的思路1.相机采集图片或者从本原创 2022-03-01 16:58:19 · 3299 阅读 · 4 评论 -
HALCON联合C#检测表面缺陷——检测缺陷原理(三)
上一节中我们说了Halcon的一个例程,ball_seq.hdev检测环形边界,代码比较长,中间很多代码的作用是为了提高代码的鲁棒性,我们初学者可以省略一些代码,下面打开Halcond的这个例程,再创建一个空白项目,我们在代码的基础上来简化,然后导出。打开例程再重新创建一个新项目,最好电脑有两个显示器,这样看起来比较方便1.加载图片例程中加载图片的时候重新关闭了窗口,按照图片的比例再重新打开显示,这里我们直接显示,这和我们的检测框架里的机制是一样的。例程代码如下修改后代.原创 2022-02-09 16:29:35 · 990 阅读 · 4 评论 -
HALCON联合C#检测表面缺陷——检测缺陷原理(二)
这一节我们先说一个Halcon的例子autobahn.hdev快速检测道路标志这是运行代码的结果,下面我们每条代码过一遍,下面的代码路径为打开halcon,浏览实例程序,方法中的Blob分析,有些重点代码会详细讲解,* autobahn.hdev: Fast detection of lane markers* dev_update_window ('off')dev_close_window ()dev_open_window (0, 0, 768, 575, '..原创 2022-01-15 11:52:43 · 530 阅读 · 1 评论 -
HALCON联合C#检测表面缺陷——检测缺陷原理(一)
检测缺陷原理会分成很多篇来说,主要包括一下:1.检测界面布局及后台代码2.halcon例程分析以及导出3.检测原理4.在C#中如何优化检测代码今天先说一下第一个知识点,软件检测界面的布局和代码。这里和相机界面基本雷同,参数的读取,参数的写入,检测模板的创建。后面我会说明为什么需要模板参数和检测参数两种,这样布局基本符合大部分缺陷检测的需要。创建读取参数函数 private void ReadDectionPara() {.原创 2022-01-12 11:05:04 · 1777 阅读 · 0 评论 -
HALCON联合C#检测表面缺陷——相机界面参数读取以及操作
接上一节上一节中我们实现了在界面画ROI和ROI的裁剪以及注册图片的切换这里先贴出裁剪圆的代码,上节遗留了这个问题 //裁剪圆形按钮 private void button14_Click(object sender, EventArgs e) { HOperatorSet.SetColor(settingWindow, "gray"); HOperatorSet.SetLineWidth(setting原创 2022-01-06 19:01:02 · 1124 阅读 · 7 评论 -
HALCON联合C#检测表面缺陷——Halcon窗口画ROI
接上一节,这一节。我们讨论在HALCON窗口画ROI的初级版本,后期我们再优化,初级版本只是画ROI,ROI的并集差集等,后期我们再优化ROI和图片同步缩放移动等。这里我要申明一下,所有的代码都是初级版本,比较容易理解的版本,在这个版本上我们可以扩展很多版本包括界面,这里只有一个主界面放了tabcontrol,我们也可以创建很多个FORM,分为主form,设置form等。针对于代码优化,因为有些代码会重复写很多遍,针对于这样的代码我们可以直接封装起来,这样调用就会很方便。首先我们到设置界面,创建原创 2022-01-03 14:20:57 · 2457 阅读 · 4 评论 -
HALCON联合C#检测表面缺陷——设置界面
接上一节返回主界面点击tabPage2在tabPage2中我们放置一个tabControl,增加和修改tabPages,并且放置一个halcon窗口修改窗口的布局属性,全部选中修改tabcontrol的布局属性top bottom right修改tabcontrol的字体大小添加几个按钮,和label如下,这几个按钮主要是在窗口上画ROI相机设定界面我们的布局如下,这里因为创建按钮和label都和前面一样,我就不说创...原创 2022-01-02 16:25:50 · 1921 阅读 · 8 评论