当前位置: 首页 > article >正文

【HALCON 实战入门】2. HALCON 快速入门

欢迎订阅【HALCON 实战入门】专栏1. HALCON 简介与安装2. HALCON 快速入门3. 图像读取、显示与保存4. 图像采集5. 交互式与 ROI2. HALCON 快速入门第 1 章安装 HALCON第 2 章HALCON 架构2.1 算子2.1.1 参数与数据结构2.2 扩展包2.3 语言接口2.3.1 HALCON/Python 接口2.3.2 HALCON/C 接口2.3.3 HALCON/C 接口2.3.4 HALCON/.NET 接口2.4 图像采集接口2.5 专用 I/O 接口第 3 章应用程序开发3.1 HDevelop3.2 示例程序3.2.1 在 HDevelop 中创建原型3.2.2 准备 Visual Studio 项目3.2.3 导出库项目3.2.4 将库项目集成到 Visual Studio 中第 4 章学习指南本文译自HALCONQuick Guide版权属于 Copyright © 2003-2025 by MVTec Software GmbH, Munich, Germany。有关 HALCON 的更多信息请访问https://www.halcon.com关于本手册本手册对 HALCON 进行介绍面向无 HALCON 使用基础的初学者。本手册包括以下主题HALCON 安装本章介绍 MVTec 软件管理器SOM。HALCON 架构本章讲解理解 HALCON 及其工作原理所需的部分理论基础。应用开发方法本章阐述基于 HALCON 进行开发的三种基本方式并通过首个编程实例引导您上手。后续学习指引本章列出可参考的其他信息来源。第 1 章安装 HALCONHALCON 是德国 MVtec 公司开发的一款综合性的机器视觉标准软件拥有全球通用的集成开发环境HDevelop。对于 Linux 和 Windows 用户我们建议通过MVTec 软件管理器SOM下载并安装 HALCON。SOM 是一款用于软件包的安装管理器可访问远程产品目录并支持软件包的下载与安装等功能。通过 SOM 安装 HALCON 的详细步骤说明请参阅《安装指南》。注通过 SOM 安装 HALCON 的详细步骤说明请参阅 【HALCON 实战入门】1. HALCON 简介与安装。第 2 章HALCON 架构HALCON 的基础架构如图 2.1 所示。其核心部分为图像处理库包含超过 2000 个算子。通过扩展包可以开发自定义算子。在应用程序中可以通过各类语言接口调用这些算子例如 HALCON/C 或 HALCON/Python。这些接口库支持以对应编程语言的典型编程风格直接使用算子。针对图像采集设备的接入HALCON 提供图像采集接口可以使用统一的方式操控各类不同的图像采集设备。包含设备专属实现逻辑的库会在需要时动态加载。类似地I/O 设备通过专用 I/O 接口进行访问。图 2.1HALCON 基础架构。2.1 算子HALCON 库中的所有功能都是通过算子Operators完成的。每个算子都包含多种实现方法可以通过参数选择。所有算子的列表可以在 HALCON 算子参考手册HALCON Operator Reference中查看该手册提供了 HDevelop, .NET, Python, C, 和 C syntax 接口语法。算子的特性如下算子之间不存在层级关系。算子自然会形成逻辑分组。算子的设计遵循开放式架构规范。许多算子可自动实现并行化处理且对用户透明。算子的输入、输出参数遵循标准化排序规则输入图像参数、输出图像参数、输入控制参数、输出控制参数。2.1.1 参数与数据结构HALCON 包含两类基础参数类型图像类数据与控制类数据。图像类数据包含 图像、区域和 XLD扩展线型描述eXtended Line Description。图像图像主要由多个通道构成即由包含像素值的矩阵组成。同一幅图像的所有通道尺寸均相同。关于像素与通道的详细说明请参阅 HALCON 算子参考手册中的 “图像” 章节。每幅图像均可通过 ** 感兴趣区域ROI** 指定需要处理的图像部分。关于 ROI 处理的详细内容见《解决方案指南 ISolution Guide I》中的 “感兴趣区域ROI” 章节。区域区域是一组像素的集合。区域内的像素无需相互连通即使是任意离散的像素集合也可作为单个区域处理。使用 connection 算子可将一个区域拆分为多个连通区域即由连通像素构成的组件。XLDXLD 包含所有基于轮廓与多边形的数据。亚像素精度算子如 edges_sub_pix会以 XLD 数据形式返回轮廓。轮廓是一系列由线段连接的二维控制点控制点之间的间距通常约为一个像素。XLD 对象除控制点外还包含局部属性与全局属性。典型示例包括控制点的边缘幅值、轮廓段的回归参数等。除提取 XLD 对象外HALCON 还支持对其进行后续处理例如根据指定特征范围筛选轮廓、将轮廓分割为直线、圆弧、多边形或平行线等。控制类数据包含 句柄handles 以及整数、浮点数、字符串等基本数据类型。句柄handles是对复杂数据结构的引用例如图像采集接口的连接或基于形状匹配的模板。出于效率与数据安全考虑算子之间传递的并非完整数据结构而仅传递句柄。句柄是具有特定意义的标识值禁止修改并且在不同运行环境、不同软件版本之间可能存在差异。当所有引用均被覆盖后句柄会被自动释放。使用句柄的典型场景包括图形窗口、文件、套接字、图像采集接口、OCR、OCV、测量以及匹配。2.2 扩展包HALCON 包含了丰富的算子库也可以通过自定义新算子进行扩展。HALCON 提供了扩展包接口支持以扩展包的形式集成使用 C 语言开发的新算子。扩展包接口包含若干预定义例程与宏便于在 C 语言中便捷处理图像数据与内存对象。新算子成功集成后即可与其他 HALCON 原生算子一样正常使用。有关扩展算子库的详细信息请参阅《扩展包程序员手册Extension Package Programmer’s Manual》。2.3 语言接口HALCON 提供了各类语言接口原生支持 Python、C、C 及 .NET 语言接口可以在应用程序中直接调用 HALCON 算子并使用其数据类型。开始开发前我们建议先查看可直接运行的示例程序。通过示例您可以了解项目的搭建方式以及算子与数据类型的使用方法。为符合对应编程语言的通用规范不同语言接口在类型名称、类、算子命名规则等方面可能会存在差异。各支持编程语言对应的算子原型在《HALCON 算子参考手册HALCON Operator Reference》中提供了详细说明。2.3.1 HALCON/Python 接口Python 接口凭借其简洁性和快速原型开发能力脱颖而出。在导入 HALCON/Python 模块后HALCON 算子可直接作为独立函数进行调用。注意HALCON/Python 中的算子参数被划分为函数参数输入与返回值输出两部分。示例以下代码读取一幅图像并计算其中的连通区域数量。本例程的前提条件与详细说明请参阅《程序员指南Programmer’s Guide》中的Part 4, 首个示例程序。imgha.read_image(pcb)regionha.threshold(img,0,122)num_regionsha.count_obj(ha.connection(region))print(fNumber of Regions:{num_regions})2.3.2 HALCON/C 接口C 语言接口是 HALCON 支持的最简接口。HALCON 算子的本身就是由 C 语言实现的C 语言是原生接口支持最好。每个算子对应一个或两个全局函数算子名称与参数顺序均与 HDevelop 语言相同。示例以下代码读取一幅图像并计算其中的连通区域数量。本例程的前提条件与详细说明请参阅《程序员指南Programmer’s Guide》中的Part 5, 首个示例程序。Hobject img;read_image(img,pcb);Hobject region;threshold(img,region,0,122);Hobject connected_regions;connection(region,connected_regions);Hlong num_regions0;count_obj(connected_regions,num_regions);printf(Number of Regions: %PRIdPTR\n,num_regions);2.3.3 HALCON/C 接口C 接口比 C 接口复杂得多应用了 C 面向对象编程的优点包括自动类型转换、构造和析构函数等。另外和 C 接口一样也为每个 HALCON 算子提供了全局函数来实现程序化的编程风格a procedural style of programming。读取图像并计算连接区域(connected regions)数量的 C 接口实现代码如下。C 接口比 C 语言接口复杂也更加完善。它充分应用了 C 面向对象编程的优点例如自动类型转换、对象构造与析构以及将函数与其数据封装为类。C 也为每个 HALCON 算子提供了全局函数以支持与 C 接口类似的过程式编程风格。示例以下代码读取一幅图像并计算其中的连通区域数量。本例程的前提条件与详细说明请参阅《程序员指南Programmer’s Guide》中的Part 2, 首个示例程序。HImage img{pcb};HRegion regionimg.Threshold(0,122);Hlong numRegionsregion.Connection().CountObj();std::coutNumber of Regions: numRegions\n;2.3.4 HALCON/.NET 接口C# 与 Visual Basic.NET 通过 .NET 接口使用 HALCON。与 C 类似它提供两种编程风格过程式编程与面向对象编程。在过程式编程风格中类 HOperatorSet 提供了全部 HALCON 算子其中使用 HObject 管理图像类数据使用 HTuple 管理控制类数据。在面向对象编程风格中系统提供了如 HDataCode2d、HMeasure、HShapeModel 等类以实现核心功能还提供了用于图像类数据的类例如 HImage 和 HRegion。示例以下代码读取一幅图像并计算其中的连通区域数量。本例程的前提条件与详细说明请参阅《程序员指南Programmer’s Guide》中的Part 3, 首个示例程序。HImage imgnewHImage(pcb);HRegion regionimg.Threshold(0d,122d);intnumRegionsregion.Connection().CountObj();Console.WriteLine(Number of Regions: numRegions);2.4 图像采集接口图像采集接口是图像采集设备厂商提供的软件与 HALCON 之间的桥梁。这些接口构成了一套通用、统一的接口仅需少量算子即可完成操作。详细信息请参阅《解决方案指南 II-ASolution Guide II-A》。HALCON 通过动态库Windows: 动态加载库 DLLs, Linux: 共享库 shared libraries的形式为 50 多个图像采集卡和数百种工业相机提供图像采集接口。库文件名以 hAcq 为前缀开头HALCON XL 使用的库文件以 xl 为后缀结尾。基于行业标准、应用最广泛的接口已随 HALCON 库一同安装。其它接口以及已包含接口的最新版本可从网址 https://www.mvtec.com/products/interfaces 下载。MVTec 会持续开发新接口当设备厂商软件变更时对应的 HALCON 接口也会随之适配。如需查看所支持图像采集接口的完整列表也可参阅《图像采集接口参考手册Image Acquisition Interface Reference》。图像采集设备安装成功后在 HALCON 中可以通过调用算子 open_framegrabber 访问设备只要指定图像采集接口名称及连接参数即可。然后通过调用算子 grab_image或 grab_image_async即可采集图像。2.5 专用 I/O 接口HALCON 为多种 I/O 设备提供接口以实现数据采集。这些接口使用动态库Windows: 动态加载库 DLLs, Linux: 共享库 shared libraries。库文件名以 hio 为前缀开头HALCON XL 使用的库文件以 xl 为后缀结尾。HALCON 对不同 I/O 设备使用同一类算子实现统一访问。安装好 I/O 设备后调用算子 open_io_device 建立连接指定 I/O 设备接口名称及可选的设备专属参数。连接建立后通过调用 open_io_channel 打开传输通道然后使用算子 read_io_channel 和 write_io_channel 进行数值读写。请注意HALCON I/O 设备接口的最新信息及可下载的接口含文档可在网址 https://www.mvtec.com/products/interfaces 获取。如需查看所支持 I/O 设备接口的完整列表可参阅《I/O 设备接口参考手册I/O Device Interface Reference》。第 3 章应用程序开发HDevelop 是面向 HALCON 机器视觉库的交互式开发环境。推荐用户先在 HDevelop 中进行快速原型开发。可以通过 HDevelop 找到最优的算子与参数以完成图像分析任务。在完成 HDevelop 程序开发后需要将其移植到最终运行环境中。有三种方式可以选择从头编写程序从头编写程序意味着将 HDevelop 代码手动转换为目标编程语言C、Python 等。注意不同编程语言在算子命名规范、类名等方面可能存在差异详见《HALCON 算子参考手册》、《程序员指南》。导出 HDevelop 代码使用 HDevelop 的代码导出功能可以自动将 HDevelop 代码转换为目标编程语言代码。导出库项目HDevelop 的库导出功能会生成一个可直接使用的项目文件夹其中包含目标语言的封装代码以及用于构建项目的 CMake 文件。该功能基于 HDevEngine 解释器实现可以在 C 或任何可集成 .NET 对象的编程语言编写的应用程序中直接执行 HDevelop 程序。因此当修改 HDevelop 代码时无需重新编译整个应用程序。也可以直接使用 HDevEngine详见《程序员指南》Part6HDevEngine 的使用方法。3.1 HDevelop我们先来初步了解一下 HDevelop。图 3.1 展示的是加载并部分执行一段程序后的 HDevelop 用户界面。图 3.1HDevelop 用户界面默认情况下以下窗口为可见状态它们也是使用 HDevelop 进行开发的核心窗口图形窗口GraphicsWindow显示中间结果即图像类数据如图像、区域和 XLD 轮廓。程序窗口ProgramWindow在此窗口中编写程序代码通过算子调用 HALCON 的图像处理功能。变量窗口VariableWindow显示所有变量包括图像类变量与控制类变量。有关 HDevelop 的详细说明请参阅《HDevelop 用户指南HDevelop User’s Guide》。下面的视频教程也可以作为学习 HDevelop 的入门教程HDevelop 教程 01界面与导航GUI and NavigationHDevelop 教程 02变量VariablesHDevelop 教程 03可视化Visualization3.2 示例程序在学习 HALCON 基本概念和 HDevelop 用户界面之后我们将使用库导出方式开发一个 C 应用程序。接下来本节将介绍详细的操作步骤您也可以观看相关教程视频通过库项目导出将 HDevelop 代码集成到 C 应用程序Integrate HDevelop code into a C application using the Library Project Export通过库项目导出将 HDevelop 代码集成到 C# 应用程序Integrate HDevelop code into a C# application using the Library Project Export。这些视频演示了库导出的完整流程。3.2.1 在 HDevelop 中创建原型本示例的任务是读取一幅图像并计算其中的连通区域数量。打开 HDevelop并将以下代码输入到程序窗口中read_image(Image,pcb)threshold(Image,Region,0,122)connection(Region,ConnectedRegions)count_obj(ConnectedRegions,Number)通过点击工具栏中的运行或按F5键来测试您的程序。为便于将此 HDevelop 代码集成到实际应用程序中我们将机器视觉部分封装到一个本地过程中。高亮选中以下代码行threshold(Image,Region,0,122)connection(Region,ConnectedRegions)count_obj(ConnectedRegions,Number)单击鼠标右键打开上下文菜单。选择 “创建新过程Create New Procedure”。将其命名为count_regions。选择 “参数”并将选择方案更改为“先入后出First In Last Out”。点击 “确定” 确认。将 HDevelop 程序保存为hdev_count_regions.hdev。3.2.2 准备 Visual Studio 项目本示例将使用 Visual Studio 2019。创建一个空的 C Windows 控制台项目命名为vs_count_regions。请勾选 “将解决方案和项目放在同一目录中” 选项。添加 C 源文件菜单项目 → 添加新项 → C 文件并命名为vs_count_regions.cpp。在工具栏的下拉菜单中选择解决方案平台 x64。打开项目属性菜单项目 → vs_count_regions 属性并进行以下设置选择 C/C → 常规添加以下附加包含目录(HALCONROOT)\include\halconcpp选择 链接器 → 常规添加以下附加库目录KaTeX parse error: Undefined control sequence: \lib at position 13: (HALCONROOT)\̲l̲i̲b̲(HALCONARCH)选择 链接器 → 输入添加以下附加依赖项halconcpp.lib;hdevenginecpp.lib3.2.3 导出库项目接下来将 HDevelop 程序hdev_count_regions.hdev导出到 Visual Studio 项目文件夹中。打开此前创建的 HDevelop 程序hdev_count_regions.hdev。打开 文件 → 导出库项目。进行以下设置输入文件当前程序目标语言C项目名称hdev_count_regions项目位置选择 Visual Studio 项目 vs_count_regions 所在路径。命名空间hdev_count_regions单击 “导出” 确认。现在Visual Studio 项目文件夹 vs_count_regions 中至少应包含以下文件vs_count_regions.cpp源文件vs_count_regions.sln解决方案hdev_count_regionsHDevelop 导出的文件夹cmakeres_hdev_count_regionshdev_count_regions.hdevsourcehdev_count_regions.cpphdev_count_regions.hCMakeLists.txt3.2.4 将库项目集成到 Visual Studio 中最后需要将 HDevelop 程序集成到 Visual Studio 项目中。打开 Visual Studio 项目。打开 “项目 → 添加现有项”选择由 HDevelop 库导出功能创建的 C 文件hdev_count_regions.cpp和头文件hdev_count_regions.h。文件位于 hdev_count_regions\source 文件夹中将以下代码输入到vs_count_regions.cpp中。#includeiostream#includeHalconCpp.h#includehdev_count_regions/source/hdev_count_regions.hintmain(){HalconCpp::HImageImage(pcb);hdev_count_regions::SetResourcePath(hdev_count_regions/res_hdev_count_regions);HalconCpp::HTuple Number{};hdev_count_regions::count_regions(Image,Number);std::coutNumber of Regions: Number.L()\n;}执行程序。控制台打开并显示结果 “Number of regions: 43”。第 4 章学习指南如果要更深入地学习 HALCON我们提供了更多文档与支持资源。MVTec 学院MVTec 学院提供大量交互式在线课程涵盖从基础概念到高级专项应用的众多主题。请访问 https://academy.mvtec.com 了解更多信息。HDevelop 示例程序HALCON 提供丰富的示例程序不仅适用于 HDevelop也支持多种编程语言。这些示例可在环境变量 %HALCONEXAMPLES% 指向的目录中找到若未设置该变量则位于 HALCON 安装目录下的 examples 子文件夹中。打开 HDevelop 示例程序的方法选择菜单“文件 → 浏览 HDevelop 示例程序…”。若要学习 HALCON 基础概念建议查看示例程序halcon_basic_concepts.hdev。服务与支持mvtec 官网https://www.mvtec.com/services-support 提供多种支持资源例如教程视频、研讨会与培训信息、包含开发技巧的开发者专区等更多内容。HALCON 文档HALCON 文档包含从入门到专家级的丰富资料。例如我们的解决方案指南详细讲解机器视觉方法及其在 HDevelop 中的应用。推荐从【解决方案指南 ISolution Guide I】开始学习它介绍了主流机器视觉方法。所有手册的概述与简要说明可在文档首页查看。【本节完】版权声明本文译自HALCONQuick Guide版权属于 Copyright © 2003-2025 by MVTec Software GmbH, Munich, Germany。转发必须注明原文链接【HALCON 实战入门】2. HALCON 快速入门 (https://youcans.blog.csdn.net/article/details/160250188)Copyright by youcansqq.com 2026Crated2026-04

相关文章:

【HALCON 实战入门】2. HALCON 快速入门

欢迎订阅【HALCON 实战入门】专栏: 1. HALCON 简介与安装 2. HALCON 快速入门 3. 图像读取、显示与保存 4. 图像采集 5. 交互式与 ROI 2. HALCON 快速入门第 1 章:安装 HALCON第 2 章:HALCON 架构2.1 算子2.1.1 参数与数据结构2.2 扩展包2.3 …...

别再搞混了!手把手教你配置SAP公司代码的会计科目表(OB62详解与避坑指南)

SAP财务实战:深度解析OB62配置中的会计科目表分配逻辑与避坑策略 每次打开SAP的财务配置界面,那些看似简单的选项背后往往隐藏着复杂的业务逻辑。特别是在处理跨国公司财务系统时,会计科目表的配置就像是在搭建一座连接不同会计准则的桥梁—…...

Magisk刷机必备技能:5分钟快速提取payload.bin中的boot.img文件(2023最新工具链)

Magisk玩机实战:2023极速提取payload.bin中boot.img的完整指南 当你手握最新Android刷机包却苦于无法直接获取boot.img时,那种感觉就像拥有宝藏地图却找不到钥匙。作为玩机老手,我经历过太多次在payload.bin海洋中盲目打捞的困境——直到发现…...

如何高效使用国家中小学智慧教育平台电子课本下载工具:完整操作指南

如何高效使用国家中小学智慧教育平台电子课本下载工具:完整操作指南 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获取课本内容…...

告别Source Insight卡顿!用Vim + Ctags + Cscope打造你的Linux代码阅读神器(附.vimrc配置)

从零构建极速代码导航环境:VimCtagsCscope实战指南 第一次接触大型C项目时,我像大多数新手一样选择了图形化IDE。直到某天在远程服务器上,看着Source Insight索引文件时逐渐变红的进度条和最终崩溃的X11会话,才意识到该寻找更高效…...

从抓包小白到协议侦探:用Wireshark在Win11上解密一次完整的网页访问过程

从抓包小白到协议侦探:用Wireshark在Win11上解密一次完整的网页访问过程 当你点击浏览器中的某个链接时,背后究竟发生了什么?网络世界就像一座巨大的迷宫,而Wireshark就是我们手中的探照灯。今天,我将带你化身网络协议…...

从几何到代码:Python实战Fisher线性判别分析(以鸢尾花数据集为例)

1. Fisher线性判别分析的几何直觉 想象你面前摆着三杯不同品种的鸢尾花,花瓣长度和宽度各不相同。现在需要画一条直线,让不同品种的花朵尽可能分开,同品种的花朵尽可能聚拢——这就是Fisher判别法的核心思想。我第一次接触这个概念时&#xf…...

手把手教你用MATLAB搞定图像格式转换:从真彩图到二值图的完整流程与避坑指南

MATLAB图像格式转换实战:从真彩到二值图的完整避坑手册 当你在深夜调试一个OCR项目时,突然发现所有二值化的文字边缘都出现了锯齿状毛刺;或者当你准备展示研究成果时,转换后的灰度图像意外出现了色块断层——这些场景是否似曾相识…...

别再死记硬背了!用Python SymPy库5分钟搞定离散数学命题逻辑真值表

用Python SymPy库5分钟自动化离散数学命题逻辑真值表 离散数学中的命题逻辑真值表是理解逻辑运算的基础工具,但手工绘制复杂公式的真值表不仅耗时,还容易出错。想象一下,面对一个包含5个命题变元的复合命题,你需要手动列出32种可能…...

CH340 是USB转串口(UART/TTL)芯片

CH340 是USB转串口(UART/TTL)芯片,是目前嵌入式/单片机开发中最常用、性价比最高的USB-TTL方案。 一、核心功能 USB ↔ UART(TTL电平) 双向转换电脑识别为虚拟COM口,用于烧录程序、串口调试、打印日志兼容 …...

【技术解密】从.NET软件授权机制到注册机实战:一次完整的逆向工程之旅

1. .NET软件授权机制深度解析 第一次接触.NET软件逆向是在五年前,当时为了研究一个工业设计软件的授权机制,我花了整整两周时间才搞明白它的加密逻辑。现在回想起来,那种从一头雾水到豁然开朗的感觉依然令人兴奋。.NET程序的授权验证通常包含…...

Qt5.14.2 MinGW静态编译实战:从环境搭建到独立可执行文件生成

1. 环境准备:工具链与源码部署 搞Qt静态编译就像搭积木,得先把所有零件备齐。我去年给工业控制软件做独立部署时,深刻体会到工具链完整的重要性。Windows环境下需要准备这些关键材料: Qt 5.14.2官方安装包:推荐从清华大…...

Java Stream Collectors实战指南:从toList到groupingBy,轻松搞定数据汇总与报表

Java Stream Collectors实战指南:从toList到groupingBy,轻松搞定数据汇总与报表 在数据处理的世界里,Java Stream API就像一把瑞士军刀,而Collectors则是这把刀上最锋利的刀刃。想象一下,你手头有一堆杂乱无章的Movie对…...

LCD1602显示异常?51单片机驱动DS1302时钟的5个常见坑点及解决方法

51单片机驱动DS1302与LCD1602的五大实战陷阱与破解之道 1. 通信协议配置不当导致的显示异常 当LCD1602显示乱码或完全不亮时,首先需要检查通信协议配置。51单片机与LCD1602的通信需要严格遵循时序要求,常见问题包括: 初始化序列缺失&#xff…...

Vue3项目里,如何用vue3-treeselect优雅处理后端返回的树形数据?

Vue3项目中优雅处理树形数据的实战指南:从API对接到vue3-treeselect渲染 在开发中后台管理系统时,树形结构数据的选择与展示几乎是标配需求。想象一下这样的场景:后端API返回的部门组织结构数据格式是{id: 1, name: 研发部, child: [...]}&am…...

深入解析Playfair解密脚本:从原理到实现

1. Playfair密码的前世今生 第一次听说Playfair密码是在大学的信息安全课上,教授用粉笔在黑板上画出5x5方格时,我还以为要玩井字棋。这种诞生于19世纪的加密方法,至今仍是古典密码学的经典案例。它的独特之处在于采用双字母替换机制&#xff…...

用51单片机和Proteus 8.10做个光照报警器:从仿真到实物,手把手带你复现(附完整代码和原理图)

51单片机光照报警器实战指南:从Proteus仿真到硬件落地的全流程解析 在物联网和智能家居快速发展的今天,环境监测设备的DIY制作成为电子爱好者入门的经典项目。其中,基于51单片机的光照报警器因其硬件简单、原理清晰,特别适合作为初…...

从电流采样到SVPWM:手把手解析PMSM有感FOC的闭环实现

1. 从电流采样到SVPWM:PMSM有感FOC闭环控制全景 第一次接触PMSM(永磁同步电机)的FOC(磁场定向控制)时,我被那些数学变换和专业术语搞得一头雾水。直到在实验室里用示波器抓取实际波形,才真正理解…...

别再傻傻分不清了!DC-DC和LDO到底怎么选?从原理到实战,一次讲透

DC-DC与LDO选型实战指南:从原理到黄金组合方案 在嵌入式系统设计中,电源方案的选择往往决定了整个项目的成败。记得我第一次设计物联网终端时,因为错误选择了LDO导致设备续航时间缩短了60%,这个教训让我深刻意识到电源选型的重要性…...

‘神奇九转’指标真的能帮你逃顶抄底吗?我用Python回测了A股数据

量化验证:用Python回测"神奇九转"指标在A股的真实表现 在量化交易领域,各种技术指标层出不穷,其中"神奇九转"因其简单直观的逻辑备受关注。这个指标声称能在连续上涨或下跌九天后发出反转信号,帮助投资者精准…...

别再只盯着开关电源了!聊聊LDO这颗‘定海神针’在便携设备里的那些事儿

别再只盯着开关电源了!聊聊LDO这颗‘定海神针’在便携设备里的那些事儿 当智能手表在凌晨3点精准监测到你的血氧波动,当TWS耳机在通勤地铁上隔绝了90%的环境噪音,这些看似平常的用户体验背后,都藏着一颗被低估的"定海神针&qu…...

GLASS:梯度上升驱动的工业图像异常合成与检测新范式

1. GLASS框架:工业图像异常检测的破局者 在精密制造领域,一个肉眼难以察觉的微小划痕可能导致整批产品报废。传统质检员每天要盯着流水线检查上万件产品,这种高强度作业下漏检率往往高达15%-20%。而现有的AI检测方案面对这种"弱缺陷&quo…...

Comsol 5.6模型下的18650圆柱锂电池电化学反应与热行为研究:三种放电倍率参数化扫描...

18650圆柱锂电池comsol5.6模型 参数已配置,电化学生热研究,三种放电倍率,参数化扫描,各种结果图都有直接上手折腾18650锂电池的COMSOL仿真,特别是电化学生热这块,老司机都知道放电倍率不同温度场能差出个马…...

FanControl终极指南:5分钟搞定Windows风扇控制,告别噪音烦恼[特殊字符]

FanControl终极指南:5分钟搞定Windows风扇控制,告别噪音烦恼😊 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://…...

ZenStatesDebugTool终极指南:3步解锁AMD Ryzen处理器深度调试能力

ZenStatesDebugTool终极指南:3步解锁AMD Ryzen处理器深度调试能力 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址:…...

终极Visual C++运行库AIO管理指南:从基础部署到高级定制

终极Visual C运行库AIO管理指南:从基础部署到高级定制 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist Visual C Redistributable(VC运行库…...

从零到一:基于mmdetection-3.1.0与RTMDet-Ins-m的自定义数据集实例分割实战

1. 环境准备与mmdetection安装 第一次接触mmdetection框架时,我也被它复杂的依赖关系搞晕过。不过跟着官方文档一步步操作,其实半小时就能搞定。这里分享几个避坑经验:建议使用conda创建虚拟环境,python版本选择3.8最稳妥&#xf…...

深入PyTorch源码:grid_sample的坐标映射到底是怎么算的?(从-1,1到像素索引)

深入PyTorch源码:grid_sample的坐标映射到底是怎么算的? 当你第一次使用grid_sample时,可能会被它神奇的坐标变换能力所吸引——它能够将归一化的[-1,1]坐标精确映射到输入特征图的像素索引上。但当你需要调试输出异常或优化性能时&#xff…...

5分钟轻松搞定Windows与Office激活:KMS_VL_ALL_AIO智能脚本全攻略

5分钟轻松搞定Windows与Office激活:KMS_VL_ALL_AIO智能脚本全攻略 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows和Office的激活问题烦恼吗?面对复杂的命令…...

多模型路由在 RAG 系统中频繁误判:一次从特征漂移到动态降级的工程复盘

背景 / 现象 我们团队在 2025 年底上线了一套面向企业知识库的智能问答系统,基于 RAG 架构,支持多模型路由(包括本地小型模型与云端大模型)。初期设计目标是:在保证响应质量的前提下,通过智能路由降低调用成…...