- 博客(177)
- 收藏
- 关注
原创 意外看到的宏定义#define F(x, y, z) (((x) & (y)) | ((~x) & (z)))
有时还需要不同的逻辑,那时候很扯,直接就是两台机写两个程序,17年的时候,那时候还不知道怎么切换,直到前人走了,看了人家的代码,才知道用条件宏,才晓得在不同条件可以用虚基类来创建不同的派生类,再结合条件宏来编译。顺道搞明白几个宏的含义。~x 是按位取反运算(bitwise NOT),它将 x 的每一位取反(0变1,1变0)。仅当 x 的对应位为0且 z 的对应位为1时,结果的该位才为1。如果 x 的某一位为1,则结果的该位取决于 y 的对应位。如果 x 的某一位为0,则结果的该位取决于 z 的对应位。
2025-06-06 19:54:40
486
原创 halcon案例gray_moments.hdev
dev_set_lut设置活动图形窗口的查找表(Look-Up-Table,简称LUT)。查找表定义了从单通道图像中的“灰度值”到屏幕上的灰度值或颜色的转换。然而,与该操作符不同的是,新的查找表也用于之后打开的所有新图形窗口。操作符 moments_gray_plane 计算灰度值矩和灰度值平面近似的参数。Alpha 表示沿行轴方向(“向下”)的梯度,Beta 表示沿列轴方向(“向右”)的梯度。以下是例程说明==================================
2025-06-04 14:48:46
215
原创 close_edges.hdev
close_edges函数用于补全边缘检测中的间隙,生成更完整的物体轮廓。它通过分析边缘点邻域中振幅(梯度)最大的点,若该点振幅超过设定的最小阈值MinAmplitude,则将其加入边缘区域。输入需包含边缘检测结果(如sobel_amp输出的单像素边缘)和梯度幅值图像,输出为闭合的边缘区域。示例代码展示了使用sobel_amp检测边缘后,对比直接阈值处理(红色)和经close_edges闭合处理(绿色)的效果差异,可见后者显著改善了边缘连续性。该操作适用于梯度变化平缓区域的边缘修复,但可能导致边缘波动。
2025-06-04 12:24:28
159
原创 记录一次失败的线扫相机阴影矫正
我没有按照人家说的拿一个白纸啥的,一来,我现场找不到A4纸;2来,我想把线扫的背景直接拿掉。所以就按照真实的环境来的。设置到所需的行数:行数8192,用的最大视野;以及高度设置了2048;点击获取暗场图像,获取完成,点击执行暗场矫正。接着,点击:获取明场图像;这里把亮度设为了0,不想有干扰。让光晕在整幅图里呈现的相对均匀。也可能是这样,所以矫正失败。把图设置为6000高度;完了运行起来,采集一幅图。获取完成就点击,明场矫正。再用原图接着明场矫正。
2025-04-26 17:33:52
212
原创 来日方且长
像极了,少平在全班同学吃过饭后,作为打菜的他,却一个人践踏着泥泞,去到他山后的安乐窝。想起富贵,活着里最大的主人公,唯一且年迈,因为年少无知,一个一个的送走了所有人,最后却留下了那一只和他同样年迈的老黄牛。有的人的优雅,真是天生的。头戴头盔的某人,手里拿着两瓶小酒,白酒,李太白可以随口一句,金樽清酒斗十千,玉盘珍馐,觥筹交错之间留下洋洋洒洒的诗书。年少时读石壕吏,纯属背课文,最近看到,尤其成家之后,对家人,对ZF,社会阅历更加丰富之后,没有刚毕业时候的血气方刚,有事硬怼,取而代之的是,视若罔闻。
2025-04-23 23:10:14
646
原创 记录下测试最近遇到的问题
这次的问题是,选择的连接模块:选择cpu module(FX5);之前一直选择的是:FX5-ENET(/IP),选的不对,选对之后,可以测试成功,和gxworks3或者GX2,应该没有直接关系。GX3需要:设置SLMP或者MELSOFT不影响,也可能是因为HMI已经有一个SLMP的缘故。3、行触发时候,触发源可以设置为LINE0/LINE1/LINE3/编码器/分频器。4、分频器的接入信号也可以是LINE1/LINE3/编码器等;可能是设置的编码器模式:正向和反向的方向不对。2、线扫相机不取图;
2025-04-17 13:20:30
214
原创 海康相机(海康机器人千兆网口工业面阵相机用户手册)IO
大三的时候,有个学长说过,有很多东西,不值得记住。所以一直被影响到现在。只记得思路,并不记得参数。虽然有时候参数是压根还原不回来的。接线也是,每次都得查手册对应,完全不记得哪个线序是对应什么,加上每次要接线,都找不到说明书在哪。
2025-04-08 14:48:04
173
原创 线扫相机光源遇到的问题
因为纸袋会跑,所以加了一个亚克力的板子用来压住,板子开了一个槽,这个槽是正对线扫相机视野的。但是放上去之后,中间会有黑色阴影,然后视野就会变暗。光源要打到线扫的那一行上,所以一定会有角度,就是在线扫相机的物方焦平面和光源之间,会被这个板子,板子有厚度,会遮挡,中间出现黑色阴影,现在把这个削掉了。为啥要全切,因为纸袋宽度,从小到大。之后:和不放板子是一样的,都是亮的。之前:中间会有黑色阴影。
2025-03-29 19:43:44
130
原创 halcon案例select_object_model_3d.hdev
select_object_model_3d筛选connection_object_model_3d连通域volume_object_model_3d_relative_to_plane体积max_diameter_object_model_3d外接直径
2025-03-25 00:34:31
766
原创 halcon案例set_object_model_3d_attrib.hdev
* 在这个示例中,设置了一个三维物体模型的立方体的坐标。* 其次,设置了三角形和颜色。第三,修改了一个三维物体模型的坐标。* 第四,展示了移除已设置属性的过程。* 在所有步骤之间,都会对生成的三维物体模型进行可视化。
2025-03-24 23:52:02
208
原创 halcon例程gen_primitives_object_model_3d.hdev最基础
* 本示例程序展示了如何在 HALCON 中使用以下操作符:* gen_plane_object_model_3d、*gen_sphere_object_model_3d_center、*gen_sphere_object_model_3d、*gen_cylinder_object_model_3d *和 gen_box_object_model_3d。* 在此示例中,一个平面、两个球体、一个圆柱体和一个立方体被设置为不同的姿态。* 生成的三维物体模型的原始形状被可视化显示。
2025-03-24 23:27:22
662
原创 记录一个问题,在几乎相同配置的电脑,我自己电脑不卡,现场电脑很卡-关掉实时保护
测试发现,拖动时,windows Defender这个CPU占用率特别高;所以怀疑和他有关,再加上自己电脑没这东西。现场自己关了实时保护。确实互相之间差一些,但是用好的配置也不行。用自己电脑,很正常,滚动条拖动不卡顿;第一波需要完成整个图像处理并显示。程序赋值到C固态盘,也没用;除了系统,其他都确认没问题;第二波只是一个二值化;
2025-03-20 16:17:19
136
原创 halcon案例distance_pc.hdev
点和contour可以是包含,可以是点在contour上,也可以是点在外。一直没关注过这个算子:最近总在找一个合适的矩形计算的东西。读图并筛选到类圆形,且直接用外界椭圆的方式取得圆心。计算得到圆心位置到待拟合轮廓的最大最小距离。点到contour的距离。
2025-03-18 11:45:10
150
原创 线材连接找方向,并获得线
上篇文章的,想起很多判断是否线材焊接上,或者剪脚是否剪断的问题,刚好找到最近之前评估过一个风险项的。正向没有找完,反向找的时候,角度不对,导致了起点位置没找对,需要局部修改。(3)线的角度偏差较大‘正向找不出,反向也找不出。这里线是白色的,所以用Light。找错位置时候的搜索区域。(1)线没有乱歪曲的。
2025-03-18 11:02:53
223
原创 halcon案例segment_ball_bond_lead_frame
否则,计算Regions与Pattern的开运算面积与Regions面积的比值(以百分比表示)。将Regions中的每个区域与Pattern区域的并集进行比较。如果可能,则从Regions中复制相应的区域。确定从Pattern的边缘到Regions中每个区域边缘的最小最大范数距离(见distance_rr_min_dil)。确定从Pattern的边缘到Regions中每个区域边缘的最小欧几里得距离(见distance_rr_min)。确定Pattern的中心到Regions中每个区域中心的欧几里得距离。
2025-03-18 00:16:59
473
原创 halcon例程track_wires_on_chip.hdev
主要是找线,遍历迭代跟踪起点和终点获得轮廓。第二个:* 将线的所有线段合并为一个覆盖整个轨迹的长轮廓。判断最小值,如果大于5,反向重新查找得到线段。第三个:* * 更新搜索参数以用于下一次迭代。更新起点,以及角度,搜索范围的半径等参数。获取搜索区域,根据已知的起点。如果不是,直接联合在一起。第4个:跟踪到线的区域。初步筛选contour。找到距离起点最近的轮廓。
2025-03-17 23:46:51
367
原创 DeepLearningTool-深度学习分类-和HALCON的详细过程
损失函数:衡量预测误差,用于模型优化。混淆矩阵:评估分类模型性能,提供详细预测结果分析。两者结合使用,可以全面评估和优化模型。过拟合:模型过于复杂,捕捉了噪声,表现为训练集误差低,测试集误差高。欠拟合:模型过于简单,无法捕捉数据模式,表现为训练集和测试集误差都高。调整参数过拟合:简化模型、增加数据、使用正则化、早停、Dropout。欠拟合:增加模型复杂度、特征工程、增加训练时间、调整学习率、使用集成方法。通过合理调整参数和方法,可以有效避免过拟合和欠拟合,提升模型性能。
2025-03-04 22:09:01
1917
原创 视野和焦距
同样的焦距,工作距离越大,视野越大。比如MV-CS200-10GM,25mm的镜头,工作距离200Mm,视野105*70mm;工作距离250,视野是131*88mm。同样的工作距离,焦距越短,视野越大。比如MV-CS200-10GM,工作距200mm,35mm的镜头,目标宽高为75*50mm;25mm的镜头,目标宽高为105*70mm;
2025-03-03 14:50:59
282
原创 拼图和替换图内容
outimage1是由图像1的从第500行开始的2000行,作为第一部分,第二部分是图像2的2000行之后的其余部分,一起组合所成。图像大小和原图一致。此处的output1图是由图像1的最后2000行,作为起始的2000行,后面的用图像2保持不变,两者合并在一起,得到一个大图。此处的output1图是由图像1的最后2000行,作为起始的2000行,后面的用图像2保持不变填充得到一个等大的图。在相机的回调函数中,图像数据通常以 BYTE* 指针的形式提供,同时会提供图像的宽度、高度和位深度等信息。
2025-03-03 00:43:16
579
原创 浅浅的理解消息响应机制
自己写框架,还经常不会用子窗口调用主窗口;指针也用不起来,所以,每次,最终的解决方法就是用消息传递。刚开始在树上看是基于消息响应,其实不太明白干啥的。现在理解的就是,你需要和某人建立关系,然后你俩需要一个指令,这个指令就是消息传递函数,具体传的啥,就看你函数写啥就会执行响应的动作,但是需要知道是谁给谁传递。所以就有一些主从关系和函数在。两年前看QT的框架,发现槽函数和消息响应机制其实都差不多;可惜,当时做的框架也不知道去哪了,现在已经把QT忘光了。
2025-03-02 02:19:04
833
原创 海康相机取图记录
他们用主动取图;我没听过,但是我觉得我应该用过。其实就是用getframetimeout(),只是觉得自己真是没关注过,她又问你是不是用回调取图。确实,我一直用回调取图,因为这家公司大家都是这么用。为此还复习了很久的函数指针和指针函数之间的关系。知道回调函数需要注册。最开始的公司,他们用Halcon的接口取图,嗯
2025-03-02 00:53:41
1035
原创 halcon例程print_quality_smallest_module_size
在 HALCON 中,get_data_code_2d_results 函数用于获取二维数据码(如 QR 码、Data Matrix 等)的解码结果和质量评估信息。当使用 ‘quality_isoiec15415’ 参数时,QualityGrades 返回的是根据 ISO/IEC 15415 标准评估的二维数据码的打印质量等级。Contrast:对比度,数据码域内最小和最大像素强度的范围,对比度越高,等级越好。Grid Non-Uniformity:网格非均匀性,评估数据码在网格上的均匀性。
2025-02-24 15:36:00
329
原创 entropy_gray在halcon
在图像分析中,Anisotropy(各向异性系数)是一个重要的特征参数,它反映了图像灰度值分布的对称性。具体来说,各向异性系数的值越小,表示灰度值分布越对称;例如,在纹理分析中,各向异性较高的区域可能表示纹理方向性较强,而各向异性较低的区域则可能表示纹理较为均匀。熵是图像灰度值分布的信息量度量,表示图像灰度值的随机性或不确定性。自然图像分析:在自然图像中,各向异性系数可用于分析物体的纹理方向性,例如树叶的纹理或水流的方向。通过利用各向异性系数,可以更全面地理解图像的特征,从而提高图像分析的准确性和效率。
2025-02-21 16:14:24
359
原创 halcon例程segment_plants
此例:分割不同背景中的绿色植物。其中算子segment_image_mser是新的,可以借鉴学习,以及不同的颜色空间域,可以尝试使用
2025-02-13 00:47:53
456
原创 halcon案例count_fish_sticks
此程序主要使用了measure_projection 来测量鱼柳边界,以及用50作为判断参数来确认边界,并显示后进行宽度宽度,宽度大于20的作为鱼的个数,大于48的则认为NG。使用了轮廓线思想。以及有将数组转化为函数来查找边缘。此法可借鉴找多个边缘使用。
2025-02-13 00:26:53
368
原创 halcon案例classify_pill_defects_deep_learning_4_infer
【代码】halcon案例classify_pill_defects_deep_learning_4_infer。对新图像进行推理”
2025-02-08 13:28:35
230
原创 halcon案例classify_pill_defects_deep_learning_3_evaluate
深度学习分类工作流之一,训练后模型的评估。主要有一个评估指数,比如,召回率,精确率,F1分数,混淆矩阵,TOPK错误率,以及热力图显示
2025-02-08 12:22:06
240
原创 halcon案例classify_pill_defects_deep_learning_2_train
训练参数的设置,并进行模型训练,保存最佳模型和最终模型。
2025-02-08 11:49:51
173
原创 halcon案例classify_pill_defects_deep_learning_1_preprocess
分类工作流的一系列示例之一第一部分数据集预处理。设置输入/输出路径 设置参数读取标记数据并将其拆分为训练、验证和测试 预处理数据集 预览预处理后的数据集
2025-02-08 10:31:23
148
原创 halcon案例create_dl_model_classification
* 使用 HALCON 深度学习框架创建一个分类模型。* 本示例向您展示了如何:* 1: 创建一个深度学习分类模型,* 2: 设置模型参数并通过其摘要检查模型,* 3: 检索和修改层参数,* 4: 添加元数据(可选)。为了创建一个网络,需要将不同的层连接成一个图。* 这意味着,我们从(至少)一个输入层开始。* 所有后续层都通过指定之前定义的层作为输入来添加。
2025-02-07 18:47:24
244
原创 halcon案例create_dl_model_segmentation
*使用 HALCON 深度学习框架创建一个分割模型。*本示例展示了如何:*1: 创建一个深度学习分割模型,*2: 设置模型参数并通过其摘要检查模型,*3: 添加元数据(可选)。*本示例中构建的网络有两个不同的输出。*一个用于像素分类置信度,*一个用于分割图像。*此外,为了训练,我们添加了以下层:*输入(权重)*输入(分割图像目标)*类别 ID 转换*交叉熵损失*分割网络架构的总结如下:*输入 softmax -> 损失(仅用于训练) 深度最大值 arg(分割图像)深度最大值(分割置信度)为了创建一个网络,需
2025-02-07 18:37:10
207
原创 halcon案例dl_anomaly_detection_global_context_workflow
* 本示例展示了全局上下文异常检测(Global Context Anomaly Detection,简称 GC-AD)的一般工作流程。* 通过 GC-AD,你可以在无异常图像上训练模型,然后将其用于检测新图像中的异常。* 该工作流程被拆分为不同的部分,这些部分被封装在各自的局部程序中。每个部分的参数可以在相应的程序中进行自定义。* 请参考相关章节了解有关 GC-AD 的更多详细信息。
2025-02-07 18:16:56
335
原创 halcon案例dl_anomaly_detection_workflow
* 深度学习异常检测示例。* 本示例展示了基于深度学习的异常检测的一般工作流程* 该工作流程通常包括以下步骤* 1数据集预处理* 2在无异常(“ok”)图像上训练模型* 3对训练好的模型进行阈值估计和评估* 4对新图像进行推理
2025-02-07 17:56:02
382
原创 halcon案例dl_anomaly_detection_global_context_inference
* 本示例展示了全局上下文异常检测(Global Context Anomaly Detection,简称 GC-AD)的推理工作流程。* 该网络由两个子网络组成:局部网络和全局网络* 局部网络专注于检测结构异常* 而全局网络则用于发现逻辑异常* 更多关于这一主题的详细信息请参阅相关章节*推理工作流程通常包括以下步骤:* 1、数据集预处理* 2、对印刷电路板(PCB)图像进行推理* 3、(可选)使用局部网络和全局网络检查结果
2025-02-07 17:22:20
781
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人