- 博客(288)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 【机械视觉】Halcon—【十二、边缘提取】
以坐标为种子坐标,向四周进行搜索,寻找合适的区域,这个区域满足灰度值与当前的均值图。类似Sobel,但卷积核不同(Sobel更注重中心像素,Prewitt更平均)。:卷积核大小(3、5、7、9等,越大抗噪性越强但边缘越模糊)对噪声有一定的平滑作用,但不如高斯类算子(如Canny)。:滞后阈值(低阈值用于弱边缘,高阈值用于强边缘):平滑系数(越小越平滑,推荐0.5~2.0),对噪声敏感,通常需要先做高斯平滑。:卷积核大小(3、5、7等):高斯平滑系数(越大越平滑),计算简单,但对噪声敏感。
2025-06-09 20:45:57
712
原创 【机械视觉】Halcon—【十、实例—木头检测_充电宝检测_豆子检测】
摘要:本文介绍了三个基于Halcon的机械视觉检测项目:1)木头检测通过阈值分割、腐蚀膨胀运算和区域合并,统计木材数量;2)充电宝小孔检测采用手动绘制检测区域后进行阈值分割和形状筛选;3)豆子检测使用binary_threshold自动阈值分割,配合腐蚀操作去除噪声。三个项目均包含图像预处理、特征提取和数量统计的核心流程,展示了Halcon在工业视觉检测中的典型应用方法。关键技术包括阈值分割、形态学运算和区域统计等图像处理算法。
2025-06-06 16:03:48
244
原创 【机械视觉】Halcon—【八、灰度形态学操作和生成棋盘格】
在图像处理中,形态学操作是一种基于形状的分析方法,常用于图像的滤波、边缘检测、噪声移除等。在Halcon中,形态学操作可以通过使用形态学滤波器(如膨胀、腐蚀、开运算、闭运算等)来实现。下面将详细介绍如何在Halcon中使用形态学操作来调整灰度图像。
2025-06-06 14:27:52
135
原创 【机械视觉】Halcon—【七、blob阈值分割—regiongrowing区域生长法目标提取—直方图】
本文介绍了Halcon中Blob阈值分割的实现方法。主要内容包括:1)基础阈值分割步骤:读取图像、灰度转换、阈值分割、Blob分析和结果可视化;2)自动阈值分割算子auto_threshold的原理与应用,通过高斯平滑直方图寻找波谷作为阈值;3)针对不同对比度图像提供sigma参数选择建议(高对比度3-5,低对比度6-10)。文章通过具体代码示例演示了两种分割方法,并详细解析了自动阈值分割的灰度直方图处理过程。Halcon提供的丰富图像处理函数能满足各种复杂分析需求。
2025-06-05 16:32:41
322
原创 【机械视觉】Halcon—【六、交集并集差集和仿射变换、透视矩阵】
在图像处理和计算机视觉领域,交集、并集和差集是基本的集合操作,它们在图像分析中尤为重要,特别是在图像分割、特征提取和对象识别等任务中。Halcon(现为MVTEC Vision++)是一个强大的机器视觉软件,提供了丰富的图像处理函数,可以用来执行这些集合操作。
2025-05-30 22:11:42
488
原创 【机械视觉】Halcon—【五、霍夫变换(查找几何图形)hough】
本文介绍了使用Halcon进行霍夫变换检测几何图形的过程。首先通过图像预处理(裁剪、边缘提取、阈值分割和形状筛选)准备输入区域,然后利用hough_lines算子检测直线,参数包括角度步长、阈值等控制精度。检测结果包含直线的法向量角度和原点距离,最后通过形状筛选(角度和坐标约束)提取特定方向的直线并用不同颜色显示。该方法可扩展用于检测圆、椭圆等其他几何图形。
2025-05-30 11:17:06
148
原创 【机械视觉】Halcon—【四、Halcon中的图像预处理】
本文系统介绍了Halcon中的图像预处理技术,重点涵盖图像增强、滤波和频域处理三大类方法。在图像增强方面,详细解析了空间域(灰度变换、直方图修正)和频域法(傅里叶变换滤波)的原理与算子实现,如emphasize对比度增强和equ_histo_image直方图均衡化。针对噪声处理,对比了均值滤波(高斯噪声)、中值滤波(椒盐噪声)和高斯滤波的特点及算子应用(如median_image)等等。
2025-05-30 10:29:20
1214
原创 【机械视觉】Halcon—【三、Halcon中的一些基础操作(图片操作,剪切,窗体操作,ROI绘制,正则,加载图像划分区域,生成网格图像,进制转换,文本标记,正弘图像,旋转绘制,保存窗口文和文件)】
本篇文章分享一下halcon中的基础操作。aaa和bbb都是窗体。
2025-05-28 20:04:45
661
原创 【机械视觉】Halcon—【二、Halcon算子全面介绍(超详细版)】
Halcon 的算子(operators)按照功能被系统性地划分为多个类别,官方文档中目前(Halcon 22.11 版本)共有 19 个主分类,每个主分类下还有若干子分类。本人在此对这19个分类的常用核心算子进行了一系列的总结,且本人在文章最后还总结了一些案例经验。注意:跨分类调用:某些算子可能在多个分类中,但官方文档中会明确其主分类。例如: read_image(文件操作)常被其他分类(如图像处理)的示例调用,但其核心功能是文件读取。
2025-05-23 21:03:12
1628
原创 【机械视觉】Halcon—【一、Halcon的介绍和基础语法】
Halcon是由德国MVTec Software GmbH开发的一款功能强大的机器视觉软件,广泛应用于工业检测、医学成像、机器人引导和三维视觉等领域。其核心特点包括丰富的图像处理算法库(包含1800多个算子)、跨平台支持(Windows、Linux、macOS及嵌入式设备)、多语言集成(C++、C#、Python等)以及深度学习功能。Halcon支持GPU加速和多核CPU并行计算,适合实时处理需求,并提供灵活的授权方式(永久授权和订阅制)。其典型应用场景包括工业检测、机器人引导、医疗影像分析、物流分拣和自动
2025-05-23 16:36:23
1115
原创 C#—Lazy<T> 类型(延迟初始化/懒加载模式)
Lazy<T> 是 C# 中的一个类,用于实现延迟初始化(懒加载)模式。它提供了一种线程安全的方式来延迟创建大型或资源密集型对象,直到第一次实际需要时才进行初始化。
2025-04-21 21:40:09
1130
原创 【机械视觉】C#+VisionPro联合编程之连接硬件工业相机———【七、分享两种C#+VisionPro抓取相机并操作的方式】(本文有介绍CogFrameGrabbers相机抓取类)
本文通过使用两个小例子介绍两种抓取相机的方式。第一种抓取方式是通过visionPro中的cogacqfifotool工具进行检测相机,并且进行配置,配置完成后将工具保存本地用于在WINFORM中加载。第二种方式是在C#中通过Cognex.VisionPro.CogFrameGrabbers类进行抓取相机,然后通过抓取到的相机对象创建ICogAcqFifo相机采集接口。从而进行操作。
2025-03-28 15:13:49
1693
原创 【机械视觉】C#+VisionPro联合编程———【六、visionPro连接工业相机设备】
通常连接相机涉及到硬件接口和软件配置。硬件方面,常见的接口有GigE、USB3、Camera Link等,需要确认相机的型号和接口类型,以及安装驱动。软件方面,VisionPro可能需要通过工具像QuickBuild来配置相机,或者使用CogAcqFifoTool来检测和连接相机。
2025-03-26 21:53:09
2066
原创 【C#高阶编程】—单例模式详解
单例模式是一种设计模式,用于确保一个类只有一个实例,并提供一个全局访问点来访问该实例。单例模式常用于需要全局唯一对象的场景,比如配置文件管理、日志记录、数据库连接池等。
2025-03-19 21:39:43
749
原创 【C#高级编程】—表达式树详解
表达式树是一种强大的工具,它允许你将代码逻辑表示为数据结构,并在运行时分析和操作这些逻辑。它的核心作用包括动态生成代码、分析代码逻辑以及与外部系统交互。表达式树在 LINQ、ORM 框架(如 Entity Framework)和动态查询等场景中发挥着重要作用。
2025-03-18 21:22:13
1097
原创 C#—【特性详解以及自定义特性和通过反射读取特性】
目录C#—【特性详解以及自定义特性和通过反射读取特性特性的主要用途(举一些直观例子)1. 标记代码,让框架自动处理2. 数据验证(表单/模型校验)3. 控制序列化行为4. 生成文档(如API接口说明)5. 实现AOP(面向切面编程)为什么用特性而不用其他方法?日常开发中的高频场景一句话总结常见预定义特性(Predefined Attributes)示例代码自定义特性(Custom Attribute)一、如何定义自定义特性?二、如何应用自定义特性?三、如何通过反射读取特性?总结自定义特性和反射的应用实例。
2025-03-17 06:15:00
2349
原创 C#—【在不同的场景该用哪种线程?】
避免在 UI 线程或 ASP.NET 请求上下文中使用(会导致死锁)在C#中有很多种线程操作方法但都运用在不同的场景。:尤其对于 I/O 操作,99% 的场景应首选。(ASP.NET Core 已优化线程池调度):避免长期占用线程池线程,导致其他任务排队。:结合线程池的复用能力和异步的高效 I/O。:集中捕获异常,避免未处理异常导致进程崩溃。:线程池复用线程,避免频繁创建/销毁开销。:长时间操作(>1秒)使用独立线程或。:异步释放线程,避免阻塞线程池线程。:线程池线程无法设置优先级或名称。
2025-03-14 11:23:44
1058
原创 C#—线程池详解
线程池(ThreadPool)是 .NET 提供的一种线程管理机制,通过复用线程减少创建/销毁开销,适用于高并发、短期任务的场景。核心作用:自动管理线程生命周期,优化资源利用率。适用场景:处理耗时 <1 秒的短期任务(如 HTTP 请求、轻量计算)。默认行为最小线程数 = CPU 核心数最大线程数 ≈ 1000(不同 .NET 版本有差异)使用原则短期任务用线程池,长期任务用独立线程避免阻塞线程池线程(使用释放线程)合理配置线程数(通过优先使用Task类(更现代的 API,支持取消/延续等操作)
2025-03-14 10:32:54
1303
原创 C# 的 ManualResetEvent(线程同步操作) 类详解
是用于线程同步操作的类,允许一个或多个线程等待特定信号,以协调多个线程的执行顺序。它通过事件通知机制实现,确保线程在收到信号前保持阻塞,直到其他线程显式发出信号。多个工作线程需要等待某个公共条件(如资源初始化完成)满足后,才能同时开始工作。例如:主线程启动后台任务后需等待其初始化完成,再执行后续操作。:一旦处于终止状态(Signaled),所有等待线程立即释放,直到手动重置。:分阶段任务中,后续阶段需等待前一阶段所有线程完成。:多个工作线程等待某个共享资源(如数据加载完成)。进入阻塞状态,等待初始化完成。
2025-03-13 21:54:17
1487
原创 C#—闭包详解
定义:闭包是一个函数(如委托、Lambda表达式)与其引用的外部变量的绑定。这些变量的生命周期被延长,与闭包共存。捕获变量:闭包捕获的是变量的引用(而非值),因此外部变量的修改会反映到闭包内。// Lambda捕获count变量// 输出1// 输出2(闭包维持count状态)优势:简化代码结构,支持状态封装,增强函数灵活性。注意点:理解变量捕获机制,避免循环中的错误捕获,管理资源释放。
2025-03-13 15:38:30
599
原创 【机械视觉】C#+VisionPro联合编程———【五、硬币检测小项目实现(C#+VisionPro联合编程和csv文件格式操作)】
总共有十二张检测的图片,当点击检测按钮时检测当前展示的图片并且将检测效果展示在表格中,当点击上一页或下一页时换检测图片,点击保存本地时通过csv文件格式将表格数据保存,当下一次运行时将数据读取出来并且展示在表格中。此项目通过异步进行优化,在加载时改变了以往卡顿的情况,加载变得流畅。此项目检测时的逻辑代码是在visionPro中完成的。
2025-03-11 21:49:03
479
原创 【机械视觉】C#+VisionPro联合编程———【四、检测彩色保险丝实例,以及C#+VisionPro的两种写法】
在机械视觉C#+VisionPro联合编程编程中,在处理业务逻辑时通常会有两种写法,一种是将逻辑代码编写在visionPro中然后再使用C#将visionPro工具加载到vs中,另一种是先通过C#加载visionPro工具到vs中再使用C#在vs中编写逻辑代码。本篇文章将用检测彩色保险丝的实例将这两种写法分别展现出来。
2025-03-11 14:04:25
984
原创 C# backgroundworker类(后台线程)
密集型运算,如果直接在 UI 线程执行这样的运算就会出现UI不响应的问题。解决这类问题的主要途径是使用多线程,启动一个后台线程,把运算操作放在这个后台线程中完成。但是原生接口的线程操作有一些难度,如果要更进一步的去完成线程间的通信就会难上加难。它的主要目的是在不阻塞用户界面(UI)的情况下运行耗时操作,同时支持进度报告和任务取消。是简化桌面应用后台任务处理的经典工具,适合需要快速实现进度更新和取消功能的场景。在单独的线程中运行长时间操作(如文件下载、数据处理),防止UI线程被阻塞,保持界面响应。
2025-03-10 21:38:00
1002
原创 【机械视觉】C#+VisionPro联合编程———【三、C#操作VisionPro中的工具详解(CogToolBlock ),以及实例】
在窗体加载时创建tb变量并且加载CogToolBlock给变量赋值,当点击打开图片时,根据设定好的路径打开图片并展示在cogRecordDisplay1上,点击更改图片时更改tb变量中的输入图片,点击测量时测量出图片结果并且展示。在窗体跳转时将CogToolBlock的变量传输到窗体2中并且展示在cogToolBlockEditV21上。在VisionPro中,CogToolBlock 是一种容器工具,可以将多个视觉工具(如CogBlob、CogPMAlign等)组合成一个可复用的流程。
2025-03-08 21:50:27
1537
原创 【机械视觉】C#+visionPro联合编程———【二、位深图(CogImage8Grey),使用Bitmap和CogImageFileTool操作图像方式,以及图片读取和存储的2个实例】
在 C# 与 VisionPro 联合编程中,
2025-03-06 21:03:38
1317
原创 【机械视觉】C#+visionPro联合编程———【一、C# + VisionPro 联合编程详解以及如何将visionPro工具加载到winform】
机械视觉(机器视觉)是通过计算机和图像处理技术,模拟人类视觉功能,用于工业自动化中的检测、定位、识别、测量等任务。C# 与 VisionPro 联合编程 是指利用 C# 语言的灵活性和 VisionPro(康耐视的工业视觉软件)的专业算法库,开发定制化的视觉应用系统。
2025-03-06 19:22:49
1962
原创 C#—csv文件格式操作实例【在winform表格中操作csv】
当在winform界面中点击读取按钮时弹出文件选择框,用户选择指定的csv文件然后将csv中的所有数据读取出来放置在datagridview控件,可以在datagridview控件中编辑数据,当点击保存按钮时 将datagridview控件中的所有数据存储在用户选择的csv格式文件路径中。
2025-03-05 21:51:16
636
原创 C#—csv文件格式操作
CSV(Comma-Separated Values,逗号分隔值)是一种简单且通用的文本文件格式,用于存储和交换表格数据(如电子表格或数据库内容)。它被广泛用于数据导入/导出、跨平台数据共享以及轻量级数据存储场景。
2025-03-04 21:53:07
1152
原创 C#—Settings配置详解
在C#项目中,全局配置通常指的是应用程序的设置(settings),这些设置可以跨多个类或组件使用,并且通常用于存储应用程序的配置信息,如数据库连接字符串、用户偏好设置等。
2025-03-03 17:36:55
493
原创 【C#零基础从入门到精通】(二十八)——C#try异常处理详解
在 C# 中,异常处理是一种用于处理程序运行时出现的错误或异常情况的机制。它可以帮助开发者捕获并处理可能出现的异常,避免程序因异常而崩溃,提高程序的健壮性和稳定性
2025-02-17 10:15:00
928
原创 【C#零基础从入门到精通】(二十七)——C#命名空间详解
在 C# 中,命名空间(Namespace)是一种组织代码的方式,它提供了一种将相关的类、接口、结构体、枚举等类型分组的机制,有助于避免命名冲突,提高代码的可维护性和可读性。
2025-02-17 10:00:00
135
原创 【C#零基础从入门到精通】(二十六)——C#三大特征-多态详解
在 C# 中,多态是面向对象编程的重要特性之一,它允许不同的对象对同一消息做出不同的响应。多态可以分为静态多态和动态多态,
2025-02-17 09:45:00
801
原创 【C#零基础从入门到精通】(二十五)——C#三大特性-继承详解
在 C# 中,继承是面向对象编程的一个重要特性,它允许一个类(子类或派生类)继承另一个类(父类或基类)的属性和方法,从而实现代码的复用和扩展。
2025-02-17 09:30:00
69
原创 【C#零基础从入门到精通】(二十四)——C#静态成员和非静态成员详解
在 C# 中,类的成员可以分为静态成员和非静态成员,它们在内存分配、访问方式、使用场景等方面存在显著差异。
2025-02-17 09:15:00
79
原创 【C#零基础从入门到精通】(二十三)——C#访问修饰符详解
在 C# 中,访问修饰符用于控制类、类成员(如字段、属性、方法等)的访问权限,一共有 6 种访问修饰符,分别是 public、private、protected、internal、protected internal 和 private protected。下面将详细介绍它们的功能、使用方法和区别。
2025-02-17 09:00:00
57
如果安装MySQL数据库?
2024-06-26
TA创建的收藏夹 TA关注的收藏夹
TA关注的人