
Va ◎ Halcon
文章平均质量分 75
主要介绍使用Halcon过程中的心得与方法。
丶布布
视觉工程师、人工智能领域优质创作者、内容合伙人、CSDN博客专家、阿里云专家博主。目前工作涉及视觉相关的缺陷检测、定位识别、芯片封装方面、深度学习、3D视觉等方面的内容,欢迎大家一起学习交流。
展开
-
[Halcon] 2023.2月license分享(关注持续更新)
持续更新halcon最新版的license下载地址~原创 2022-04-02 09:06:14 · 16839 阅读 · 21 评论 -
[Halcon&匹配] 判断Halcon模板句柄是否有效
下雨天,最惬意的事莫过于躺在床上静静听雨,雨中入眠,连梦里也长出青苔。判断模板是否有效, 如果无效就返回一个。原创 2024-11-21 17:36:40 · 334 阅读 · 0 评论 -
[Halcon] 检查license许可证是否过期
丶布布转载注明出处。原创 2024-08-06 16:19:09 · 1255 阅读 · 0 评论 -
[Halcon&矩阵] 手眼标定矩阵中的旋转、平移等矩阵
丶布布转载注明出处。原创 2023-10-26 13:26:35 · 442 阅读 · 0 评论 -
[Halcon&模块] Halcon13.0查询算子模块归属
丶布布转载注明出处。原创 2023-12-21 08:24:59 · 770 阅读 · 0 评论 -
[Halcon&图像] 基于多层神经网络MLP分类器的思想提取颜色区域
在进行颜色识别时,一般有如下方法:原创 2023-12-13 09:41:43 · 2111 阅读 · 6 评论 -
[Halcon] WriteImage保存图像崩溃问题
在保存图像的时候遇到了如下问题,就是我在代码的另一处地方复制了保存图像代码:发现在断点走到保存图像位置时,一直崩溃,后面我在自己使用英文输出法手动输出要保存图像的位置路径时,又可以正常保存了,非常的玄学,特此记录一下,以后保存图像时尽量手动输出路径位置。...原创 2022-07-13 13:45:13 · 2877 阅读 · 1 评论 -
[Qt5] 鼠标中心为基准缩放图像(halcon实现)
事件过滤器可以接收一个对象的所有事件,当这个对象收到事件之前,事件过滤器通过eventFilter()函数先接收事件。eventFilter()函数返回true,则取消事件(事件不再向目标对象发送);返回false,则事件被继续发往目标对象。事件过滤器可以是任何从QObject继承的对象,只要实现eventFilter()这个函数。代码如下:.h#include "qevent.h"public: void LableMouseWhee原创 2021-06-23 10:56:33 · 1712 阅读 · 0 评论 -
[Halcon&图像] 缺陷检测的一些思路、常规检测算法
缺陷检测算法不同于尺寸、二维码、OCR等算法。后者应用场景比较单一,基本都是套用一些成熟的算子,所以门槛较低,比较容易做成标准化的工具。而缺陷检测极具行业特点,不同行业的缺陷算法迥然不同,常见的是对物品表面缺陷的检测,比如工件表面的斑点、凹坑、划痕、色差、缺损等缺陷进行检测。原创 2022-03-04 21:32:40 · 17445 阅读 · 44 评论 -
[Halcon&标定] 相机自标定
一、自标定意义在项目中,偶尔会遇到由于产品形状、拍摄位置等原因导致标定板很难放置的情况,此时可以考虑使用halcon自标定算法来标定相机。halcon提供了一种自标定的算子,它可以在不用标定板的情况下,标定出相机内参(无焦距),相对于多幅标定无法获取相机的外参。求出了相机内参就可以进行畸变校正,因而自标定相对于采集多张标定板图像进行标定而言,在畸变校正方面更快捷,极大地方便在设备现场进行调试。自标定只需要一张图片,即可标定相机内参,后续若需要将像素单位换算至公有制单位,需要使用棋盘格、标准物、菲林片原创 2020-10-21 16:59:57 · 12178 阅读 · 6 评论 -
[Halcon&标定] 单相机标定
为什么要进行单相机标定?广义:畸变矫正和一维和二维测量1)畸变矫正: 在几何光学和阴极射线管(CRT)显示中。畸变是对直线投影的一种偏移。简单来说直线投影是场景内的一条直线投影到图片上也保持为一条直线。那畸变简单来说就是一条直线投影到图片上不能保持为一条直线了。这是一种光学畸变(optical aberration)。畸变是一种相差...原创 2019-05-22 15:15:06 · 28856 阅读 · 66 评论 -
[Halcon&资料] 学习资料链接
论坛、培训halcon学习网:http://www.ihalcon.com/超人视觉:超人视觉免费学习启蒙视频班简介:blob分析,几何定位,形态学膨胀腐蚀开闭运算、ROI、图像数据存储、图像处理、仿射变换、手眼标定、颜色识别、c#,c++联合基础等。超人视觉初级、初级强化免费公开视频班  原创 2020-08-20 09:27:53 · 2390 阅读 · 0 评论 -
[毕设&笔记] 毕设问题汇总
我毕业设计做的是芯片引脚缺陷检测,用的是halcon+MFC,其实说白了,就是将halcon的程序进行导出、拆分,嵌入到mfc各个部件中,从而实现整体功能。因为研一上学期学的其实是opencv+qt5,所以这部分不是很熟。这里主要将我做的毕设的过程,以及在这过程中遇到的问题记录下来,留作以后参考,也算是经验的积累。描述一:在检测引脚平...原创 2019-04-30 18:01:28 · 5274 阅读 · 0 评论 -
[Halcon&笔记] Tuple类型数组
tuple_gen_const()定义:生成特定长度的元组并初始化其元素举例:gen_tuple_const(1000,1.5) — 生成一个长度为1000,里面每一个数组元素都为1.5的数组表达式用法:gen_tuple_const(|Row|,1.5)举例:disp_circle (200000, Row, Column, gen_tuple_const(|Row|,1.5)) — 生成半径为1.5的圆,个数和位置取决于圆心Row, Column和个数和数值...原创 2020-11-03 13:15:13 · 825 阅读 · 0 评论 -
[Halcon&小结] 判断Halcon区域region是否为空
如何判断Halcon区域region是否为空最初考虑是通过count_obj判断对象的个数来判断区域是否为空,但发现空区域和一个区域得到的结果都是为1,后面通过area_center判断区域的面积来确定区域是否为空,如果区域面积为0,则区域为空。未完待续。。。...原创 2020-07-30 19:16:36 · 5286 阅读 · 1 评论 -
[Halcon&笔记] $语法的使用
原创 2020-08-24 16:02:53 · 1441 阅读 · 0 评论 -
[Halcon&笔记] 导出类—HDevWindowStack详解
在HDevelop中编写好的程序在导出时,Halcon会帮我们转换成我们需要的语言,比如C++。例:HDevelop中有如下语句需要导出: dev_close_window() Halcon导出成C++语言就成了如...原创 2019-04-20 16:48:37 · 1033 阅读 · 1 评论 -
[Halcon&笔记] 特征选择中的常用特征总结
Halcon中有区域特征(region)、灰度值特征(gray value)、XLD轮廓特征(xld)。 一、区域特征:想看某个区域的特征,单击区域,选择打开特征检测:区域中的特征包括基本特征(basic)、形状特征(shape)、重要特征(moment):基本特征...原创 2019-06-15 13:17:28 · 11134 阅读 · 0 评论 -
[Halcon&识别] 二维码识别
‘contrast_tolerance’, ‘high’ 一、二维码概念: 指在一维条码的基础上扩展出另一维具有可读性的条码,使用黑白矩形图案表示二进制数据,被设备扫描后可获取其中所包含的信息。一维条码的宽度记载着数据,而其长度没有记载数据。二维条码的长度、宽度均记载着数据。二维条码有一维条码没有的“定位点”和“容错机制”。二维条...原创 2019-07-01 15:46:21 · 16100 阅读 · 4 评论 -
[Halcon&识别] OCR字符识别
halcon里面的分类器(把要识别的目标的特征进行分类、训练)主要有四种:mlp 神经网络svmknn混合高斯模型 gmm完成OCR识别的方法:创建一个模型,用halcon自带的.ocm文件,直接识别训练器的方法1)生成一个.trf训练文件,将图像上的需要识别的字符区域与真正的字符输入进去注意:图像上每个字体都要形成一个连通域2)创建一个训练器,对特征,比如颜色、纹理等特...原创 2019-06-10 16:39:27 · 32929 阅读 · 14 评论 -
[Halcon&识别] 车牌识别
一、流程:车牌识别的流程一般是:采集预处理定位、矫正字符分割字符提取字符识别显示一、实现:dev_close_window ()dev_open_window (0, 0, 512, 512, 'black', WindowHandle)read_image (Image, 'C:/Users/Administrator/Desktop/车牌.jpg')decompo...原创 2019-06-04 18:26:23 · 6093 阅读 · 5 评论 -
[Halcon&几何] 直线的垂线与延长线的计算
一、直线垂直线的计算1、函数源码dev_close_window ()dev_open_window (0, 0, 400, 400, 'black', WindowHandle)draw_line (WindowHandle, Row1, Col1, Row2, Col2)*获取直线角度gen_region_line (RegionLines2, Row1, Col1, Row2, Col2)gen_contour_region_xld (RegionLines2, Contours, 'b原创 2021-12-30 11:28:58 · 5252 阅读 · 2 评论 -
[Halcon] 和C++数据之间的转换(HTuple、double、QString等)
HTuple→VC 数据类型转换HTuple hTuple = 1234;int i = hTuple[0].I(); // i=1234long l = [0].L(); // l=1234long lNumber = hTuple.Num(); // lNumber=1,数据个数double d ...原创 2019-05-16 15:14:22 · 14313 阅读 · 4 评论 -
[Halcon&几何] 矩形顶点和对角连线角度计算
描述:因为halcon中算子求的矩形角度有时候不是我所需要的角度,以算子smallest_rectangle2为例:1)其获取的矩形角度范围- 90< angle <= 90,即无论通过算子gen_rectangle2生成的Region角度多大,smallest_rectangle2获取的角度都不会超出这个范围。2)算子smallest_rectangle2输出的角度是通过计算Region长轴与X轴正方向夹角获取,且角度不能超出限定范围。这就会导致一个问题,由于我的得到的矩形长轴方向不是固原创 2021-03-26 17:57:00 · 3789 阅读 · 0 评论 -
[Halcon&几何] 线段中点、端点和角度的计算
一、xld线段中点area_center_points_xld (Line4, Area, Row, Column)二、xld线段端点*xld转regiongen_region_contour_xld (LineContours, RegionLines, 'filled')*提取区域轮骨skeleton (RegionLines, Skeleton)*获取轮骨端点junctions_skeleton (RegionLines, EndPoints, JuncPoints)get_reg原创 2020-10-16 15:31:29 · 10496 阅读 · 2 评论 -
[Halcon&拟合] 直线、矩形和圆的边缘提取
一、测量矩形拟合提取直线边缘1、封装的函数介绍:将整个算法进行封装,得到函数MS_LineDetecter。MS_LineDetecter MS_LineDetecter(ImageIn : outDetectRectangle : iLineRow1, iLineCol1, iLineRow2, iLineCol2, iRectWidth, iRectHeight, iSigma, iThreshold : oLineRow1, oLineCol1, oLineRow2, oLine原创 2021-12-28 16:57:57 · 8534 阅读 · 4 评论 -
[Halcon&拟合] 边缘拟合算法拓展
首先,平滑灰度值轮廓,确定一阶导数和二阶导数。 measure_projection — 提取一个垂直于矩形或环形圆弧的灰度值轮廓。 create_funct_1d_array — 根据y值序列创建一个函数。 smooth_funct_1d_gauss — 用高斯函数平滑等距一维函数。 derivate_funct_1d — 计算一个函数的导数(一阶/二阶)。derivate_funct_1d (SmoothedFunction, 'first', FirstDerivative)deri.原创 2020-07-30 10:43:49 · 4527 阅读 · 1 评论 -
[Halcon&拟合] 拟合直线边缘并计算距离
一、拟合流程:(一) 采集图像(二) 图像预处理: 一般是去噪或抠图(blob分析抠图或手绘ROI区域抠图)两方面(三) 轮廓提取:1)boundary:区域轮廓提取2)edges_sub_pix:图像轮廓提取3)threshold_sub_pix:图像轮廓提取使用算子edges_sub_pix进行亚像素的边缘提取最为普遍。其用到的滤波器有Deriche, Lanser, Shen...原创 2019-07-09 18:57:03 · 9468 阅读 · 1 评论 -
[Halcon&测量] 两线直线的角度测量
如图,测量红框中的角度:代码:*读取并截取图片 dev_close_window() read_image (Image, 'C://Users//Administrator//Desktop//1测试图.jpg') get_image_size (Image, Width, Height) dev_open_window (0, 0, Width, Height, ...原创 2019-10-01 10:54:41 · 5078 阅读 · 0 评论 -
[Halcon&测量] 测量助手详解
这里主要介绍一些如何利用Halcon做一些一维、二维的测量,单位是像素距离,如果要想测量物体的实际尺寸,需要加上单相机的标定,这里不做讲述,回归正题。测量的流程图如下: Halcon在测量物体的距离主要有测量助手、手动编程两种方式,下面介绍一下测量助手的使用:halcon...原创 2019-07-10 11:41:33 · 10882 阅读 · 2 评论 -
[Halcon&测量] 模糊测量
模糊测量是对标准测量的一种扩展,并不意味着测量是“模糊的”,而是用模糊隶属函数来控制边缘的选择。所谓的模糊隶属函数,就是将边缘的特征值转换为隶属度值,基于这些隶属值做出是否选择边缘的决定,即当隶属值大于你设定模糊阈值时,边缘就会被选中,反之则反。这种方法的优点是即使使用很低的最小阈值或平滑,也能灵活处理额外的边缘。举个简单的例子方便理解: 比如在测量开关引脚之间的宽度和距离时,引脚可能会有原创 2020-07-27 08:39:35 · 2103 阅读 · 0 评论 -
[Halcon&测量] 一维测量
一、Halcon一维测量原理: 像点到点的距离,边缘对的距离等沿着一维方向的测量都属于1D测量范畴。Halocn的一维测量首先构建矩形或者扇形的ROI测量对象,然后在ROI内画出等距离的、长度与ROI宽度一致的、垂直于ROI的轮廓线(profile line)的等距线。如下图所示。测量ROI的轮廓线尽量与被测边缘垂直,宽度适当宽些,...原创 2019-07-09 17:10:19 · 9582 阅读 · 2 评论 -
[Halcon&图像] 边缘提取算法汇总
1:sobel_amp — sobel_amp计算图像的一阶导数,用作边缘检测器。函数:sobel_amp(Image : EdgeAmplitude : FilterType, Size : )参数:Image (in):输入图像EdgeAmplitude (out):边缘振幅图像FilterType(in):过滤器类型。默认值:‘thin_sum_abs’Size (in):过滤淹模尺寸(一般数值越大,提取的轮廓边缘越暗)。默认值:3检测效果:2:roberts — roberts计算原创 2020-07-15 16:43:04 · 18675 阅读 · 5 评论 -
[Halcon&图像] 形态学处理(腐蚀、膨胀、开运算、闭运算)
一般图像处理是针对图像做形状的改变,而形态处理则是对图像进行结构性的改变,而常见的形态处理就是针对二值图像(图像中的任何像素灰度值不是0就是255)的膨胀(Dilation)、腐蚀(Erosion)、开运算(先腐蚀再膨胀)、闭运算(先膨胀再腐蚀)。一、理论:膨胀(Dilation)-增加像素: &nb...原创 2019-06-03 09:12:40 · 16111 阅读 · 2 评论 -
[Halcon&图像] 图像增强算子汇总
Halcon中增强图像的对比度也是预处理中的一环,主要有如下方式:灰度变换(scale_image)原理:可以理解为用一个模板扫描图像中的每一个像素,模板中像素最大值和最小值的差作为模板中心像素点的值。作用:拉开图像的对比度,让图像中黑的地方更黑,亮的地方更亮。emphasize:增强图像的高频区域(边缘和拐角),使图像看起来更清晰。直方图均衡化(equ_histo_image)灰度...原创 2020-08-07 13:20:50 · 22594 阅读 · 0 评论 -
[Halcon&图像] 图像滤波算法原理
图像滤波,即在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,去噪分为时域去噪和频域去噪,是图像预处理中不可缺少的操作,其处理效果的好坏将直接影响到后续图像处理和分析的有效性和可靠性。常见的滤波方式有均值滤波、中值滤波、高斯滤波等。(1)均值滤波—mean_image ...原创 2019-06-06 16:22:46 · 16551 阅读 · 0 评论 -
[Halcon&图像] 图像、区域和轮廓相互转化
区域(region)转轮廓(xld):gen_contour_region_xld (SelectedRegions, Contours, ‘border’)应该场所:拟合部分边缘提取和轮廓分割之间会用到,因为轮廓分割需输入xld轮廓,而用boundary提取区域边缘输出的是区域(region),所以需要转换。...原创 2019-11-26 11:58:58 · 24009 阅读 · 1 评论 -
[Halcon&图像] 阈值分割算法拓展
1、利用二维像素分类方法对彩色图像进行分割read_image (Image, 'ic')dev_close_window ()get_image_size (Image, Width, Height)dev_open_window (0, 0, Width, Height, 'white', WindowID)* 转换一个三通道图像成三个图像decompose3 (Image, Red, Green, Blue)dev_display (Red)dev_set_color ('red')原创 2020-09-11 15:25:11 · 2935 阅读 · 0 评论 -
[Halcon&图像] 图像阈值分割算法汇总
1.dyn_threshold — 使用局部阈值定义图像用途 :当前背景之间差异明显时,可以设定全局阈值进行threshold,但很多情况下由于背景不均一,目标体经常表现为比背景局部亮一些或暗一些,无法确定全局阈值操作,需要通过其邻域找到一个合适的阈值进行分割,dyn_threshold函数:dyn_threshold(OrigImage, ThresholdImage : RegionDynThresh : Offset, LightDark : )参数:OrigImage(n):需要进行阈值分割原创 2020-07-21 14:38:19 · 8673 阅读 · 1 评论 -
[Halcon&图像] 彩色图转灰度图处理
-1)在如果对彩色图像的的灰度图像不好进行二值化操作时,可以尝试将彩色图像RGB转换HSV空间,即色差、饱和度、强度,看看得到的 Hue, Saturation, Intensity三个分量那个二值化处理效果好。read_image (Image, 'C:/Users/Administrator/Desktop/车牌.jpg')*是先将一张3通道的彩色图分割为3个单通到的单色图decompo...原创 2019-06-15 12:33:59 · 4190 阅读 · 0 评论