尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
HALCON联合C++芯片缺陷检测:模板匹配与Blob分析实战
简介这是一套基于HALCON与C的芯片缺陷检测系统源码面向毕业设计、课程设计及项目开发。代码经严格测试可直接运行并二次扩展适合有一定C基础、想掌握机器视觉与HALCON联合开发的读者。压缩包共73个文件约42.77MB包含cpp与h源码、obj编译中间文件、vcxproj工程配置、trf/omc训练数据等覆盖界面逻辑、算法封装与工程构建多个模块同时有MFC对话框页面、属性表、函数封装与OCR训练规则文件目录组织贴近真实项目流程涉及界面交互、图像处理与字符识别等关键环节。目前已有73人浏览学习。通过源码可了解MFC界面与HALCON函数封装、OCR字符训练流程以及芯片缺陷检测的完整实现思路配合说明文档即可快速完成环境搭建和功能定制是一份完整且有参考价值的项目模板。1. 为什么是haloconc做芯片缺陷检测先看清这套方案值不值得投入一句话先给出结论在芯片外观缺陷检测这类任务上HALCON加C的组合至今仍是产线落地最稳的路径之一同时也是毕业设计、课程设计和实际项目开发里被反复复用的经典技术栈。HALCON负责模板匹配、Blob分析、边缘提取这些吃经验的图像处理算子C负责把算子串成能稳定运行的检测服务二者分工明确拿到任何一套这类源码你都不需要从零写边缘检测或形态学但必须搞懂参数怎么配、流程怎么串、结果怎么上报。这篇笔记按一个完整检测系统的搭建顺序把芯片定位、表面缺陷分割、Blob分析和参数调优整体过一遍并给出可以直接改的C代码骨架。适合手里已有源码但读不透、以及准备自己独立开发检测程序的人。先扫清值不值得做的疑问后面动手才有底。2. 芯片缺陷检测系统框架从缺陷类型到软硬件架构2.1 芯片缺陷检测到底在检什么四类典型缺陷与成像特征芯片检测听起来是一个笼统任务实际落到图像上缺陷与缺陷之间的差异比多数新手想象得大得多。常见四类缺陷分别是划痕、污渍、崩缺和引脚偏移它们在灰度图中的表现完全不同划痕是方向性很强的暗线污渍是大面积低对比度灰度异常崩缺是芯片边缘上的缺口引脚偏移则是引脚相对基体的几何偏差。正因为这些形态差异没有一个通用算子能同时覆盖它们所以合格的落地方案第一步不是调参而是把缺陷按类型拆开各自选策略。我在实际项目中通常拆成三层定位层负责找到芯片在视野里的精确位置表面层在定位后的ROI内做灰度异常检测处理划痕和污渍边缘层做轮廓比对处理崩缺和引脚偏移。这里有一个关键认知所有检测参考系都建立在准确定位上。定位偏半个像素边缘比对就会把合格产品判成崩缺因此模板匹配在这套系统中的地位比缺陷分割本身更优先。我在源码梳理时习惯先建一张缺陷类型与检测方法的映射表这能直接决定后续代码里每一项参数从哪里开始调。常用搭配如下缺陷类型灰度特征常用检测方法主要难点划痕方向性暗线、细长方向性滤波 动态阈值线宽细、对比度低污渍斑块状、低对比度大窗口均值滤波 动态阈值与芯片纹理背景难区分崩缺边缘缺口、毛刺模板匹配后轮廓比对边缘噪声容易误判引脚偏移几何位置异常定位后量测引脚间距相机畸变影响测量精度这层梳理功夫花得值。实际项目里工艺部门给的是缺陷定义书视觉工程师要做的第一件事就是把定义书里的文字翻译成表格里的行和列翻译得越细后面代码就越少返工。而且当你拿到现有源码时也建议先用这套表格去对照代码里的算子和阈值很快就能看出原作者的设计意图。2.2 HALCON在系统里的角色算子库、开发范式与C的配合方式为什么选HALCON而不是OpenCV这个问题我在不同项目里被问过很多遍。把话说透OpenCV做原型验证确实快但面对产线级部署HALCON的模板匹配、亚像素边缘提取和Blob分析经过十余年工业现场打磨稳定性和参数粒度明显更好。尤其是形状匹配HALCON对旋转、缩放和光照变化的容忍度比OpenCV拼出来的方案高出一截而且失败模式更可预测出了问题能顺着算子参数一层层排查。芯片检测项目普遍对误判率要求苛刻算法库本身的稳定性往往决定了项目能不能顺利交付。开发范式上我强烈建议先走HDevelop后转C不要反着来。HDevelop是HALCON自带的交互式调试环境算子逐步执行中间结果实时显示参数一改效果马上看得见。在这个环境里把模板匹配和缺陷分割流程跑通再通过菜单导出C代码嵌入工程效率比直接在C里改参数重编译快一个量级。拿到源码包时也一样先找里面有没有配套的.hdev工程文件有就先用它过一遍图像流程观察每个算子的中间输出再回头读C代码会顺畅很多。C在整套系统里的职责边界同样重要。它负责相机采图、流程调度、结果上报和异常处理而不是负责发明算法。很多人把图像处理逻辑全部堆在C类里参数写死、中间结果不落盘一旦线上检测率不对根本没法复盘。正确做法是让C只做控制让算子做视觉让日志和缺陷图像存档做证据三层分开系统才扛得住产线长时间连续运转。在C侧还要注意线程模型采图线程和检测线程通常要分离图像对象不能跨线程共享否则轻则画面撕裂重则直接崩溃。2.3 软硬件架构相机、光源与检测服务如何分层软件之外硬件选型直接决定算法上限。分辨率要根据最小缺陷尺寸倒推一般让最小缺陷在图像上至少覆盖3×3像素再留50%余量。以常见芯片外观检测为例视场约40mm×30mm最小要检0.1mm的缺陷理论分辨率需要1200×900实际选择200万或500万像素的工业面阵相机会更稳妥。曝光时间和光源是检出率的第一道关卡经常有项目算法折腾两周没效果最后发现是成像对比度就没做好。环形低角度光源适合凸显划痕同轴光源适合检测镜面上的污渍与崩缺背光源适合做引脚尺寸测量选型顺序永远是先定光源再定算法。软件主流程固定为六步采图、预处理、定位、分割、分类、输出。预处理在芯片检测项目里通常做得比较轻因为芯片表面相对干净过度平滑反而会把细微缺陷抹掉。定位必须用模板匹配给芯片一个稳定ROI然后在这个ROI内做后续分析。最后是节拍预算相机帧率、曝光时间、模板匹配和缺陷分割的处理耗时要提前写入方案。按我的做法整套视觉处理时间控制在产线节拍的80%以内剩下的余量留给通信抖动和异常分支否则一到现场就会因为偶发超时被前道工序频频投诉。3. 用haloconc实现检测核心模板匹配、动态阈值与Blob分析3.1 编译环境与链接配置CMake连接HALCON C接口HALCON的C接口随安装包一起提供内含头文件、库文件和运行时组件。拿到源码工程的第一步先确认本机HALCON版本与工程预期版本一致版本不一致时优先统一版本再谈编译。以Linux下CMake工程为例我通常这样组织构建配置cmake_minimum_required(VERSION 3.10) project(chip_inspect CXX) set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD_REQUIRED ON) # 查找HALCON依赖环境变量HALCON_ROOT find_package(HALCON REQUIRED) add_executable(chip_inspect src/main.cpp src/inspect.cpp src/camera_interface.cpp ) target_include_directories(chip_inspect PRIVATE ${HALCON_INCLUDE_DIRS}) target_link_libraries(chip_inspect PRIVATE ${HALCON_LIBRARIES})这里最有讲究的是find_package(HALCON)它依赖环境变量HALCON_ROOT。安装HALCON时环境变量会自动写入但如果同一台机器装了多个版本环境变量往往指向最后安装的那个容易造成头文件版本和库版本不一致。我曾在编译阶段顺利通过运行时图像对象一创建就崩溃查到最后就是版本错配。稳妥做法是在CMakeLists里显式指定路径不依赖运气set(HALCON_ROOT /opt/halcon20.11) find_package(HALCON REQUIRED)Windows下的工程一般用Visual Studio或VS Code加CMake打开。用Visual Studio时把HALCON安装目录下的include和lib路径加入项目属性Debug和Release的库文件名不同常有人混淆。另外Windows下运行期如果报缺少dll优先检查是否安装了对应版本的Microsoft Visual C Redistributable这是最容易让新人卡住的黑匣子之一。3.2 芯片定位create_shape_model建模板find_shape_model找位置定位是整套系统的地基。模板匹配的思路是先在标准图像上提取轮廓特征生成模板再在待测图像里搜索最匹配的位置和角度。建立模板的代码如下#include halconcpp/HalconCpp.h using namespace HalconCpp; HImage chipImage; chipImage.ReadImage(chip_template.png); // 转灰度模板匹配只需要亮度信息 HImage grayImage; chipImage.Rgb1ToGray(grayImage); HShapeModel shapeModel; HTuple modelID; shapeModel.CreateShapeModel( grayImage, // 模板灰度图 6, // 金字塔层数图像越大取值越大 0, // 起始角度0度 6.2831853, // 角度范围2π全周搜索 0.0174533, // 角度步长约1度 auto, // 优化方式由算子自动决定 use_polarity, // 极性明暗关系固定时选它 auto, // 对比度阈值自动选择 10, // 最小对比度过滤背景噪声 modelID ); shapeModel.WriteShapeModel(chip_model.shm);建立模板的几个参数要重点解释。金字塔层数越大搜索从低分辨率开始速度越快但层数过大容易丢失细轮廓导致定位不稳500万像素图像从6到8起步200万像素以下用3到4。角度范围和步长决定搜索空间步长越小精度越高但耗时成倍增长。实际项目中若芯片位置只有小角度偏移把角度范围设为±5度、步长0.1度速度和稳定性都能兼顾。Metric选use_polarity要求模板与待检图明暗关系一致如果表面有极性反转风险可改为ignore_global_polarity但鲁棒性会下降一般不作为首选。匹配时调用FindShapeModel对实时采集的芯片图像搜索模板位置HImage liveImage; liveImage.ReadImage(chip_live.png); HTuple row, col, angle, score; shapeModel.FindShapeModel( liveImage, // 待测图 0, // 搜索起始角度 6.2831853, // 搜索角度范围 0.5, // 最小匹配分数低于此值视为没找到 1, // 最多返回1个匹配结果 0.5, // 重叠率上限 least_squares, // 亚像素细化方式 0.8, // 贪心系数 row, col, angle, score );如果score.Length() 0说明当前图像没有找到参考点。这个分支要单独处理可能芯片没有进入视野也可能是光照突变。我常用的排查套路是先取图像几个固定位置的灰度均值均值正常就是模板失效均值异常则是打光或遮挡问题方向不同解决路径完全不同。定位找到后后续检测全部建立在它的坐标基础上所以这里宁可牺牲一点速度也要保证匹配精度。3.3 缺陷分割均值滤波与dyn_threshold动态阈值拿到芯片位置后先截出ROI再在ROI内做缺陷分割。表面缺陷的常规做法是动态阈值原理是把图像和它的均值滤波结果逐像素对比灰度差超过偏移量的像素被判为异常。均值滤波相当于给背景建模芯片表面纹理相对稳定时缺陷与背景的灰度差异会被有效放大。代码如下// 根据定位结果生成矩形ROI HRegion region; region.GenRectangle2( row[0].D(), col[0].D(), angle[0].D(), roiWidth, roiHeight // 从模板尺寸或标定获得 ); HImage roiImage liveImage.ReduceDomain(region); HImage roiGray; roiImage.Rgb1ToGray(roiGray); // 均值滤波用15x15窗口估计背景灰度 HImage meanImage; roiGray.MeanImage(15, 15, meanImage); // 动态阈值分割灰度比背景暗25以上的像素判为缺陷 HRegion defectRegion; roiGray.DynThreshold(meanImage, defectRegion, 25, dark);dyn_threshold里的偏移量25是经验起点直接决定检测灵敏度。偏移量小越细微的缺陷越容易检出但噪声也被抓进来误检率上升偏移量大误检变少但低对比度污渍可能漏掉。芯片表面若有引线框、丝印文字等正常纹理光靠全局偏移量抑制不掉需要按形状特征继续过滤或者对纹理区域提前做掩膜避免算法在高风险区域反复报警。提示在HDevelop里调试时把ROI和中间结果图像全部打开显示重点观察ROI区域是否紧贴芯片边缘ROI偏了后面所有检测都会失真。3.4 缺陷分类与结果记录select_shape特征过滤与日志输出dyn_threshold分割出来是一堆连通域必须经过Blob分析过滤。Blob分析的核心是提取每个连通域的形状特征再用select_shape按面积、长度、宽度、圆形度等条件筛选。这一步承担了缺陷判定的最终决策代码如下HRegion connectedRegions; defectRegion.Connection(connectedRegions); // 按面积过滤太小的是噪声太大的是污渍或大面积异常 HRegion selectedRegions; connectedRegions.SelectShape(selectedRegions, area, and, 30, 50000); HTuple defectCount selectedRegions.CountObj(); bool isPass (defectCount.I() 0); // 输出CSV日志 std::ofstream log(inspect_result.csv, std::ios::app); log getTimestamp() , (isPass ? PASS : FAIL) , defectCount.I() \n; log.close();面积阈值需要依据像素标定。30到50000只是起点正确做法是根据最小缺陷的实际物理尺寸换算成像素面积再乘上安全系数。比如最小缺陷0.1mm标定像素当量0.05mm/pixel时缺陷面积约4平方像素实际阈值取20以上才能避免单个噪点被放大。第二个常用特征是宽度细长划痕的面积可能不小但宽度只有两三个像素配合width特征可以过滤掉表面纹路产生的长条噪声。需要更丰富的输出时可以把每个区域的特征写入JSON或直接对接MES这些在实际源码工程里都是可扩展的接口点。4. 参数调优把检测率从“能跑”调到“能上线”4.1 模板匹配参数金字塔层数、最小分数与贪心系数实验环境把流程跑通只是起点线上参数调优才是真正体现功力的地方。模板匹配先看三个参数金字塔层数、最小匹配分数和贪心系数。层数影响速度和鲁棒性很多项目初始用6能跑但芯片型号一多有的型号轮廓细节丰富6层就把细节抹掉了匹配分数明显下降。这时候不是一味降低层数而是对每个型号单独建模板每个模板设定自己的层数再把型号与参数组做成映射表。最小匹配分数MinScore调低可以提高检出率代价是误定位增加。我习惯先设0.6跑一批样统计分数分布然后取置信下限作为正式阈值一般不低于0.4。如果分数忽高忽低问题往往不在模板而在成像稳定性回头查光源和相机参数别在软件里反复打磨。贪心系数Greediness是速度与质量的平衡默认0.8没问题追求速度可调到0.9但图像噪声较大时0.9会显著增加漏匹配概率。线上的参数管理我倾向于把参数存成配置文件或数据库字段切换芯片型号时自动加载避免现场人员手工改错。4.2 dyn_threshold参数滤波窗口尺寸与灰度偏移量动态阈值的两个核心参数是均值滤波窗口尺寸和灰度偏移量。窗口尺寸要大于缺陷宽度但小于缺陷与背景之间的灰度波动范围。简单理解窗口越大背景估计越平滑小缺陷越容易被发现但芯片表面正常的大面积纹理也可能被误判窗口太小背景和缺陷一起被抹平低对比度缺陷就漏掉了。我一般先设成预期最大缺陷宽度的2到3倍再用真实样本验证。灰度偏移量的标定有固定套路取一批无缺陷良品图计算每个像素与均值滤波结果的灰度差直方图找到99.9%像素落在的灰度差范围把偏移量设在该范围之上一点点。这样得到的阈值既不会让良品误报也不会放过明显异常。一个常见的翻车操作是嫌麻烦把偏移量设得特别小比如5结果良品表面纹路全部被判成缺陷误检率直接超标现场人员一天到晚在确认报警产线根本跑不起来。4.3 打光与成像参数曝光、增益与光源角度参数调优不能只盯着算子相机参数和光源才是根源。曝光时间过短图像整体偏暗灰度对比度被压缩动态阈值的偏移量失去参考意义增益加得过大噪声被放大Blob分析里会冒出大量假缺陷。相机参数的原则是先保证图像灰度分布在180到220之间再谈算法调参。曝光时间优先调整增益尽量维持在1以下这个顺序不要反。光源角度和方式需要根据缺陷类型定。划痕检测适合低角度环形光打在芯片表面上划痕产生方向性散射在图像中形成清晰亮线或暗线对比度比同轴光高出数倍镜面污渍用同轴光可以均匀照亮表面污渍呈现为灰色斑块引脚测量则用背光轮廓出来才是测量的前提。换产品型号时先拍一组不同打光方式下的样图对比再决定软件参数这是省时间的做法。5. 芯片缺陷检测避坑指南5个让项目翻车的常见问题5.1 模板匹配分数忽高忽低定位结果来回跳现象同一片芯片连续拍摄多次匹配分数在0.7到0.95之间波动定位坐标跳来跳去后续边缘检测跟着误判。原因表面看是匹配参数问题实际多数是光源频闪或环境光进入视野。工业相机曝光时间短LED光源驱动频闪与相机曝光不同步导致亮度不均还有一种情况是现场加了防护罩但罩内壁反光把杂散光引进了图像。解决先检查成像稳定性。固定相机对静止芯片连续采集20张计算图像灰度标准差标准差超过5去排查光源频闪。把普通环形光换成带恒流驱动的光源或者把曝光时间调成光源PWM周期的整数倍。成像稳定后再回来调MinScore否则参数调了也白调。这一步验证不超过10分钟但能省下后面几天的排查时间。5.2 漏检率很低但误检率压不下去良品被频繁误杀现象缺陷样张全部能检出但良品过线时每隔几张就报警一次好品被当成缺陷产线频繁停线确认。原因动态阈值偏移量设得太低芯片表面正常纹路、灰尘样杂质被当成缺陷。另一个常见原因是Blob面积阈值太低单个噪点就触发Fail判定。解决用三五张良品图离线跑一遍完整流程专门统计良品被分割出来的区域数量和面积分布然后把面积阈值上推到良品噪声区域最大面积的1.5到2倍。如果良品中不可避免地存在灰尘或纤维需要在前道工序增加除尘同时对难以区分的区域做二次分类用灰度均值或纹理特征过滤别只靠一个面积特征打天下。5.3 程序跑几个小时内存就涨最后崩溃现象检测程序刚启动正常连续运行两小时后内存占用从500MB涨到2GB最终卡死或直接崩溃。原因最常见的是每帧图像的中间对象没有释放。HALCON的HImage、HRegion、HTuple都是包装对象循环采集时不释放句柄内存就持续上涨另一个原因是检测线程里重复创建模板每次匹配都重新加载一次模型文件。解决在采集循环里控制中间对象作用域每帧处理完主动调用Clear()或把处理逻辑封装在独立函数里让局部对象及时析构。模板在初始化时加载一次不要放进循环。长期运行的检测程序我还会在内部加一个内存监控日志记录进程占用趋势确认曲线平稳而不是线性上升这个习惯能在故障发生前提早预警。5.4 换一个芯片批次检测结果整体漂移现象同一个型号的芯片A批次检测正常换B批次后参数不变漏检率或误检率明显上升。原因不同批次芯片可能来自不同封测线表面颜色、哑光或亮光程度、引脚高度都有差异灰度分布整体变化。模板按旧批次建立匹配分数自然下降动态阈值按旧批次灰度差设定新批次上要么失灵要么误报。解决换批次后重新创建模板并标定偏移量这是直接手段。更好的做法是在预处理环节加灰度归一化把图像整体拉伸到标准灰度范围让批次差异在进入算子前就被抹平。产线换批次时由工艺人员确认切换软件自动加载对应参数组避免手工改参数。芯片行业批次切换频繁灰度归一化几乎是一种刚需值得在架构初期就设计进去。5.5 源码拿到手编译不过一屏链接错误现象从网上下载或课程设计拿到的HALCON加C项目打开工程直接编译报一堆LNK2019或找不到头文件的错误。原因多数是HALCON版本不一致。工程按HALCON 20.11写的本机装的是HALCON 13类名和算子接口对不上或者Debug库和Release库混用Debug工程却链接了Release库。还有一种情况是HALCON运行时库没有配置到PATH编译能过但运行起不来。解决先统一HALCON版本尽量使用工程附带的版本说明。Visual Studio工程属性中检查附加依赖项Debug选带d后缀的库Release选不带d的库。运行时提示找不到halconcpp.dll时把HALCON安装目录的bin路径加入系统PATH或把dll拷贝到exe同目录。这些小问题最不涉及算法但也是让新人劝退最多的地方按顺序排查十分钟基本都能解决。6. 进阶落地把检测结果接进产线并用样本集验证检测率6.1 软件与产线通信PLC握手与结果报文设计检测程序本地跑通后离真正上线还差两步结果要能交给产线PLC或MES判定可靠性要有数据支撑。结果通信最常用的是TCP或Modbus TCP检测系统作为TCP客户端按约定协议把检测结论发给上位机。协议我建议设计成固定长度报文比如32字节2字节设备ID、4字节时间戳、1字节结果标记、4字节缺陷数量、其余预留。固定长度解析简单不会因粘包拆包问题反复扯皮。发送失败时必须有重试和报警机制视觉系统不能只管检测而不管消息送达漏掉一次不良品就可能造成质量事故。6.2 验证检测率样本集、指标与复盘上线前验证少不了一步准备至少100张无缺陷样张和50张覆盖各类缺陷的缺陷样张全部离线跑一遍统计误检率和漏检率。误检率是良品被误判为缺陷的比例漏检率是缺陷被漏掉的比例。产线入场标准通常是误检率低于2%、漏检率低于0.5%具体以客户或工艺文件为准。达不到时先回头查成像条件再查参数不要在一套固定参数上硬扛。检测结果我习惯每季度汇总统计与产线不良数据对照防止特征漂移。这套复盘习惯帮我在几个项目里避免了重大事故——看起来是算法不稳定实际是光源老化后灰度整体下沉而偏移量没有跟着调整。方案本身不复杂但在落地的每道工序上多想一步现场稳定性才会好很多。希望这些经验能帮到你让这套芯片缺陷检测方案从源码顺利变成产线上稳定运行的一环。本文还有配套的精品资源点击获取
RELATED

相关推荐

Hermes-CN-Desktop 完全指南:3步上手开源 AI Agent 桌面客户端

Hermes-CN-Desktop 完全指南:3步上手开源 AI Agent 桌面客户端

人工智能AI Agent桌面应用 【免费下载链接】Hermes-CN-Desktop Hermes Agent CN desktop app, Windows-First, built with Tauri, Typescript and Rust. Isolated Hermes Agent core insides. 项目地址: https://gitcode.com/gh_mirrors/he/Hermes-CN-Desktop 点击…

📅 2026/10/11 17:36:51
Windows全平台离线更新下载工具:内网补丁批量下载与校验实践

Windows全平台离线更新下载工具:内网补丁批量下载与校验实践

简介:这是一款面向Windows系统运维人员与装机爱好者的离线补丁下载工具,针对装完系统后需长时间联网打补丁的痛点,支持Windows XP至8.1、Server 2003至2012 R2以及Office 2003至2013全系列产品的补丁获取,并能智能判断已安装补丁&…

📅 2026/10/11 17:36:51
CASIA WebFace 数据集实战:从预处理到人脸识别模型训练

CASIA WebFace 数据集实战:从预处理到人脸识别模型训练

简介:CASIA WebFace 是人脸识别领域最主流的大规模数据集之一,面向从事人脸识别算法研究、模型训练与工程落地的开发者及高校师生,尤其适合需要海量身份标注数据来训练或微调深度人脸识别模型的场景。该资源以百度网盘链接形式提供&#xff0…

📅 2026/10/11 17:31:51
MORE NEWS

更多资讯

📰

自动侧推定位机构中的接近开关:让工件靠边更准确

自动侧推定位机构常用于装配前校正、检测前靠边、输送线转位和小型工件姿态调整。工件从输送线进入定位区后,通常需要由侧推板或气缸将其推向基准面。如果侧推距离不足,工件可能没有真正贴紧定位边;如果回位不完整,又会影响下一个…

📰

排序算法选择排序全解析:逻辑、稳定性、复杂度与工程取舍

讲个真实场景:我见过不少刚接触算法的同事,写出来的第一个排序代码,其实都是选择排序。倒不是因为他们背过这个算法,而是因为人天生就喜欢"从一堆东西里挑最小的,放到最前面"——这个动作太符合直觉了。但选…

📰

快照时间线分析:用历史快照还原目标网站的演变

快照时间线分析:用历史快照还原目标网站的演变 【免费下载链接】Legendary_OSINT A list of OSINT tools & resources for (fraud-)investigators, CTI-analysts, KYC, AML and more. 项目地址: https://gitcode.com/GitHub_Trending/le/Legendary_OSINT …

📰

一个软件工程大一新生的C语言学习感悟

我的C语言学习之路作为一名软件工程的大一新生,在这个暑假里开始学习C语言,我想分享一下我的感受。我之前接触计算机很少,但也会一点基本的操作。在得知我是软件工程专业时,我便询问了豆包关于这个专业相关的内容,于是…

📰

AI-For-Beginners 实战指南:基于 Hugging Face Transformers 的实验、文本生成与 Notebook 整理

教程人工智能机器学习深度学习 【免费下载链接】AI-For-Beginners 12 Weeks, 24 Lessons, AI for All! 项目地址: https://gitcode.com/GitHub_Trending/ai/AI-For-Beginners 点击查看 免费下载 本指南围绕课程《AI-For-Beginners》第 18 课的课后任务(…

📰

Spring Boot+Vue前后端分离旅游订票系统实战:从库存防超卖到订单状态机

上个季度我完整做了一个“旅游线路展示 在线订票”的前后端分离项目:Spring Boot 做后端接口,Vue 做前端页面,整个系统包含线路浏览、景点详情、日期团期选择、订单提交、支付状态回跳、后台线路维护这些核心环节。项目不大,但业…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬