- 博客(143)
- 资源 (4)
- 收藏
- 关注
原创 Halcon 2025年4月试用文件
https://download.youkuaiyun.com/download/weixin_42215453/90556306
2025-04-01 09:23:32
381
原创 【Halcon】灰度不均解决方案
通过白场(White Image)和黑场(Black Image)图像,手动计算校正系数。:光照不均通常为低频信号,通过高通滤波保留高频细节。:直接处理目标,避免全局受光照影响。:光照缓慢变化,目标物体尺寸较小。
2025-03-17 20:43:58
66
原创 [C++] 参数方向标记 接口描述宏
在C++中,参数方向标记是一种通过宏定义显式标注函数参数用途的编程实践。通过合理选择参数标记方案,可在代码可读性和维护性之间取得平衡,尤其在大型项目中效果显著。简单函数中过度使用可能使代码冗余,需结合注释或文档工具补充说明。通过规范宏标记,避免对输入参数误修改或未初始化输出参数的使用。宏定义不增加运行时开销,仅作为静态标记,适合性能敏感场景。宏标记无语法约束,若错误标注(如将输入参数标为。统一宏命名(如Windows API中的。可能被其他库占用),需团队统一规则。一、参数方向标记的实现原理。
2025-03-13 09:54:48
311
原创 关于C++中Debug/Release版本差异
文件(Windows)或嵌入调试符号(Linux),包含变量名、函数名和行号信息,便于断点调试。建议开发阶段使用Debug版本定位问题,发布时切换至Release模式并验证跨平台行为。Debug模式下运行会因断言失败崩溃,Release模式下跳过断言直接输出。),保留完整函数调用栈和变量初始化(如未初始化变量填充。),可能内联函数、删除未使用变量,但可能导致调试困难。一、C++中Debug与Release版本的区别。移除调试信息,文件体积更小,且不生成。
2025-03-10 19:42:56
821
原创 海康线扫相机平场矫正教程
1、白纸准备确保视野中有一张平整且无折痕的白纸,使其完全铺满相机的整个视野。2、行高设置将行高参数设定为 2048。3、灰度值控制相机端图像的灰度值应维持在 120 - 160 这个区间内。同时,最亮像素点与最暗像素点的灰度值差值不得超过 4 倍。在调整灰度值时,尽量开启增益功能。4、 图像模糊处理为减少白纸对平场矫正的影响,需将相机端获取的图像进行模糊化处理。具体操作是对镜头进行虚焦,使整体图像变得模糊。
2025-03-10 19:32:19
669
原创 API和SDK
API:是一组预先定义的函数、协议和规范,用作不同软件系统之间的接口,允许应用程序相互交互和通信。SDK:是一个更全面的工具包,包含开发软件所需的各种工具、库、文档和相关文件。
2025-03-06 20:41:56
226
原创 C++指针避坑总结
指针的使用需要非常小心,常见的错误包括空指针解引用、内存泄漏、重复释放、野指针、非法内存访问、悬空指针和指针类型不匹配。始终检查指针是否为nullptr。动态分配的内存要及时释放。避免重复释放内存。释放内存后将指针置为nullptr。确保指针访问的内存是合法分配的。避免强制转换不兼容的指针类型。通过这些简单的规则,可以有效避免指针相关的致命错误。
2025-03-06 20:33:34
844
原创 C++自定义函数默认参数使用指南
默认参数只能在函数声明或定义中指定一次,不能同时在声明和定义中设置。默认参数必须从右向左连续设置,未指定默认值的参数不能出现在右侧。参数按从左到右顺序赋值,无法跳过中间参数。默认参数可能引发与重载函数的歧义调用。C++自定义函数默认参数使用指南。
2025-02-21 09:00:00
356
原创 gen_gauss_filter用于检测带方向的线条
在Halcon中使用高斯滤波器检测多方向线条时,角度参数的选取需要综合考虑滤波器方向响应带宽、频域对称性和检测需求。
2025-02-20 20:43:09
212
原创 一种图像小面积缺陷放大的方法分享
将图像的每个像素点(i,j)的值复制到新图像的四个位置:(i,j)、(i,j+1)、(i+1,j)、(i+1,j+1)。这样原图的每个像素变成2x2的块,从而实现长宽各放大两倍,小面积缺陷放大两倍。
2025-02-19 09:00:00
452
原创 封装DLL避免第三方依赖的五大核心方法
目录一、方法代码示例1. 接口抽象与PIMPL模式2. 类型转换适配层3. 动态库加载隔离4. 二进制接口控制5. 资源封装规范二、Halcon+OpenCV工业检测DLL完整实现(C++17)1.项目结构2.核心实现代码2.1 接口定义(跨平台标准)2.2 Halcon2.3 OPenCV三、调用示例代码四、部署注意事项
2025-02-18 09:00:00
443
原创 【C++】线程封装与守护监控线程实现
本文将介绍如何通过二次封装来管理线程,以及如何利用守护线程机制监控多个线程的状态,确保程序的稳定性和高可用性。在复杂的应用场景中,直接使用 std::thread 来创建线程虽然简单,但其灵活性有限。实际应用往往需要对线程进行更精细的控制,例如设置线程优先级、CPU 亲和性,以及对线程状态进行管理等。为解决这些问题,我们对 std::thread进行了二次封装,通过引入 WorkerThread 类和 DaemonThread 类,实现了线程的高效管理和稳定运行。
2025-02-18 08:45:00
684
原创 PLC通信交互系统技术分享
这是一个C++程序,用于与西门子PLC进行通信,处理SN码、拍照信号、检测结果等流程。代码中使用了状态机,通过不同的状态来管理交互步骤。
2025-02-17 13:56:30
732
原创 【项目问题】连通域排序和自由选取
连通域按面积排序允许自定义面积区间筛选连通域自定义选取排序后的区域范围// 调用示例:筛选面积50-200的区域0, 8);// 默认选取前9个// 调用示例:选取排序后的第3-7名(索引2-6)0, INT_MAX, // 不限面积区间2, 6);// 选取第3到第7个区域。
2025-02-16 21:34:05
302
原创 【Halcon】optimize_fft_speed的使用
optimize_fft_speed` 是 Halcon 中用于优化 FFT(快速傅里叶变换)速度的函数。它通过调整 FFT 的实现参数来加速后续的 FFT 计算。
2025-02-11 18:52:21
263
原创 C++ 通过XML读取参数
方法2(一次性读取一个节点中的所有参数,然后调用一次函数)是最推荐的方案,因为它在性能和可维护性之间取得了较好的平衡。如果文件后期确实会非常大(如超过100MB),可以考虑进一步优化,例如分批处理节点,或者采用流式解析(如XMLReader)来减少内存占用。
2025-02-10 21:25:26
1105
原创 HALCON 数据结构
例如,在处理一系列图像时,可以将这些图像存储在一个Iconic数组中,然后对整个数组进行统一的处理,如批量读取、批量显示等。例如,在进行轮廓跟踪时,可以先生成一个初始轮廓,然后通过跟踪算法更新轮廓的位置和形状,实现对物体轮廓的实时跟踪。例如,在进行图像特征提取时,可以先定义一个域,将特征提取的范围限制在该域内,从而加快特征提取的速度。通过句柄,可以方便地对这些对象进行操作和管理。例如,在视频监控中,可以提取行人或车辆的轮廓,然后通过轮廓跟踪算法实时跟踪目标的位置和运动轨迹,为视频分析和监控提供重要的信息。
2025-02-08 22:15:59
159
原创 C++如何解决头文件循环引用问题?
优先使用前向声明:当只需要指针或引用时,前向声明是最简单的解决方案。合理拆分头文件:将相关的声明放在同一个头文件中,避免在头文件中包含不必要的其他头文件。使用接口抽象:通过抽象接口解耦具体实现,遵循依赖倒置原则。实现逻辑放在cpp文件:头文件只包含声明,具体实现放在cpp文件中。使用PIMPL模式:对于复杂的类,考虑使用PIMPL模式,可以完全隐藏实现细节,提供更好的ABI兼容性。通过这些方法,可以有效地解决C++中的头文件循环引用问题,并提高代码的可维护性和编译效率。
2025-02-08 22:09:23
482
原创 Deepseek本地部署教程
将大型模型部署于本地电脑,能够带来一系列显著优势,但这一选择并非人人皆宜。:若您的电脑装备了高性能独立显卡,如NVIDIA系列,且显存至少达到2GB(适用于1.5B参数模型)或更高配置(例如,14B模型需11GB显存),这将为本地运行大型模型提供坚实基础。:在处理包含敏感信息的数据时,本地部署能有效规避云端传输可能带来的数据泄露风险,确保数据安全无虞。:对于需要与本地工作流程紧密结合的任务,如自动化脚本执行、深度数据分析等,本地部署能提供更流畅、高效的集成体验。
2025-02-08 14:14:00
1870
原创 [Halcon] 灰度值插值介绍
灰度值插值是一种在图像变换中必不可少的方法,因为图像并非连续函数,而是数字化的,即由与(离散)灰度值相关联的像素组成。例如,当图像被旋转并缩小如图1.1所示时,输出图像的像素不再对应输入图像的某一个确切像素。相反,它可能包含原始图像中多个像素的部分。因此,需要一种方法来计算输出像素的灰度值。一种可能的方法是使用原始图像中恰好一个像素的灰度值,例如,其中心距离结果像素中心最近的像素。然而,这意味着原始图像中包含的信息以及图像质量可能会在变换过程中丢失。另一种选择是在原始图像中的多个像素之间进行灰度值插值。
2025-02-07 21:24:13
176
原创 【Halcon】基于形状匹配的剃须刀刀片检测与缺陷分析代码流程讲解
我们将在模板上定义两个矩形区域,分别用于测量刀片牙齿的宽度和间距。随后,我们将这些测量区域平移至模板的中心位置,以便在后续处理中能够更准确地定位和分析。测量区域是用于实际检测刀片牙齿宽度的矩形区域。这里生成了两个矩形,一个对应刀片的一侧,另一个用于另一侧。然后将这些区域对齐到模板中心,方便在目标图像中匹配后使用。
2025-01-06 16:40:22
77
原创 Linux下HALCON的使用
在编译软件的时候,会用到(链接)一些平台相关的类库,如果是在本地运行的话,一般不用作特殊处 理,但由于嵌入式软件的运行平台不是本地,所以要做一些特殊处理,让编译环境依赖的类库脱离本地依 赖,使用嵌入式平台的类库来进行链接,处理这一过程就叫作交叉编译工具链。具体的解释就是:交叉编译出来的程序, 所要运行的目标环境中,各种资源,都相对有限,所以很难进行直接的本地编译。, 内存,硬盘等资源,而嵌入式开发上的那点资源,只够嵌入式(Linux。下,直接编译出来程序,可以运行的程序(或者库文件),其可以直接在。
2025-01-04 16:58:41
329
原创 【Halcon】数据结构汇总
图像(Image)区域(Region)轮廓(XLD)整型(integer)实型(real)布尔类型(boolean)字符串类型(string)数组(tuple)向量(vector)句柄(handle)Iconic数组(Objects)Vector数组
2024-12-28 15:15:07
219
原创 【Halcon】字典 set_dict_tuple create_dict
函数用于创建一个新的空字典,并将其通过DictHandle返回。这个字典类似于关联数组容器,允许存储与唯一键(整数或字符串)相关联的任意数量的值。每个键可以引用一个元组或一个图标对象。这些值分别使用或函数存储在字典中,并可以使用或函数再次检索。存储在字典中的数据始终是原始数据的副本,无论是控制参数还是对象。因此,在调用或之后,可以立即重用原始数据。copy_obj只要每个线程访问不同的键,多个线程就可以同时添加、检索和删除键。作为这一规则的例外,多个线程可以同时从字典中检索相同的键。
2024-12-05 07:30:00
501
原创 【Halcon】把检出结果保存为原始图片大小格式
第一种方法比较耗时,但可以把每个缺陷显示为不同颜色;第二种方法不能把每个缺陷显示为不同颜色,但速度较快;
2024-12-05 07:00:00
266
原创 Halcon 试用license免费更新
https://download.youkuaiyun.com/download/weixin_42215453/90075537
2024-12-04 07:30:00
607
Python客户端与C++服务端的TCP通信代码框架模板
2025-02-17
关于图像识别的代码框架
2025-02-12
Halcon图像处理领域的灰度值插值方法研究及应用
2025-01-22
计算机视觉领域HALCON内存管理和缓存机制详解及其应用
2025-01-22
基于Arm平台的HALCON应用开发详解及其实现方法
2025-01-22
HALCON视觉开发与应用环境安装配置及许可指南
2025-01-22
CreateDefectLine.py
2021-08-23
EasyX图形库
2018-10-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人