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

DeepPCB:工业级PCB缺陷检测数据集的工程化实践指南

DeepPCB工业级PCB缺陷检测数据集的工程化实践指南【免费下载链接】DeepPCBA PCB defect dataset.项目地址: https://gitcode.com/gh_mirrors/de/DeepPCB印刷电路板PCB作为现代电子设备的神经系统其质量直接决定了电子产品的可靠性和寿命。在高速自动化的生产线上如何精准识别PCB缺陷成为制造环节的关键技术瓶颈。DeepPCB数据集正是为解决这一工业痛点而生它提供了1500对高质量图像样本覆盖六种最常见的PCB缺陷类型为研究者和工程师构建高精度检测模型提供了坚实的数据基础。 PCB缺陷检测从工业挑战到技术突破在电子制造业中PCB缺陷检测长期面临三大技术难题数据稀缺性、缺陷多样性和标注一致性。传统方法依赖人工目检不仅效率低下而且容易因视觉疲劳导致漏检误判。DeepPCB通过系统化的数据采集和标注流程将这一过程从经验驱动转变为数据驱动。与通用图像数据集不同DeepPCB专注于工业场景下的特定需求。每对图像都包含一个无缺陷的模板图像和一个经过精确对齐的测试图像这种模板-测试配对设计模拟了实际产线中的比对检测流程。数据集中的六种缺陷类型——开路open、短路short、鼠咬mousebite、毛刺spur、虚假铜copper和针孔pin-hole——覆盖了PCB生产中90%以上的常见质量问题。⚙️ 数据集架构工程化的数据设计思维数据采集与预处理流程DeepPCB的数据生成流程体现了工业级质量标准。原始图像通过线性扫描CCD以每毫米48像素的高分辨率采集确保了微观缺陷的可识别性。原始模板图像和测试图像尺寸约为16k×16k像素经过专业的裁剪和对齐处理后生成了640×640像素的标准子图像。这一尺寸设计既保证了计算效率又保留了足够的细节信息。上图展示了数据集中六种缺陷类型的分布情况。蓝色柱状图表示训练验证集中的缺陷数量橙色表示测试集。这种分布反映了实际生产环境中各类缺陷的出现频率为模型训练提供了真实的样本分布。标注体系与数据格式每个样本包含三个核心文件形成了完整的数据闭环模板图像*_temp.jpg- 无缺陷的参考基准测试图像*_test.jpg- 包含缺陷的待检测图像标注文件*.txt- 缺陷位置和类型信息标注格式采用简洁的x1,y1,x2,y2,type结构其中(x1,y1)和(x2,y2)定义缺陷边界框的左上角和右下角坐标type为1-6的整数ID对应六种缺陷类型。这种设计既保证了标注精度又便于算法解析。️ 技术栈构建从数据到模型的完整链路数据加载与预处理实践在实际应用中数据加载是模型训练的第一步。以下代码展示了如何高效加载DeepPCB数据import os import numpy as np from PIL import Image class DeepPCBDataLoader: DeepPCB数据加载器 def __init__(self, base_path, splittrain): self.base_path base_path self.split split self.samples self._load_split_list() def _load_split_list(self): 加载数据集划分列表 split_file trainval.txt if self.split train else test.txt with open(os.path.join(self.base_path, split_file), r) as f: return [line.strip() for line in f.readlines()] def load_sample(self, sample_id): 加载单个样本 # 构建文件路径 group_dir fgroup{sample_id[:5]} # 前5位数字表示组别 temp_path f{self.base_path}/{group_dir}/{sample_id[:5]}/{sample_id}_temp.jpg test_path f{self.base_path}/{group_dir}/{sample_id[:5]}/{sample_id}_test.jpg anno_path f{self.base_path}/{group_dir}/{sample_id[:5]}_not/{sample_id}.txt # 加载图像和标注 temp_img Image.open(temp_path).convert(L) # 转换为灰度图 test_img Image.open(test_path).convert(L) annotations [] with open(anno_path, r) as f: for line in f: x1, y1, x2, y2, defect_type map(int, line.strip().split()) annotations.append({ bbox: [x1, y1, x2, y2], type: defect_type }) return { template: np.array(temp_img), test: np.array(test_img), annotations: annotations, sample_id: sample_id }数据增强策略针对PCB缺陷检测的特点推荐以下数据增强组合几何变换增强随机旋转±10°、水平/垂直翻转、小幅缩放0.9-1.1倍光度变换增强亮度调整±20%、对比度调整0.8-1.2倍、高斯噪声添加缺陷模拟增强基于PCB设计规则生成合成缺陷增加模型泛化能力 模型训练工业级检测算法的优化路径骨干网络选择与特征提取对于PCB缺陷检测任务推荐使用以下骨干网络架构轻量级场景MobileNetV3、EfficientNet-Lite - 适合边缘部署平衡场景ResNet50、ResNet101 - 精度与速度的平衡选择高精度场景CSPDarknet53、Swin Transformer - 追求极致检测性能损失函数设计考虑到PCB缺陷的不平衡分布建议采用加权损失函数import torch import torch.nn as nn class WeightedFocalLoss(nn.Module): 针对PCB缺陷的加权Focal Loss def __init__(self, class_weightsNone, gamma2.0, alpha0.25): super().__init__() self.gamma gamma self.alpha alpha self.class_weights class_weights def forward(self, pred, target): # 根据缺陷类型分布计算权重 if self.class_weights is not None: weights self.class_weights[target] else: weights torch.ones_like(target) # Focal Loss计算 ce_loss nn.CrossEntropyLoss(reductionnone)(pred, target) pt torch.exp(-ce_loss) focal_loss self.alpha * (1-pt)**self.gamma * ce_loss return (weights * focal_loss).mean() 评估体系从实验室到产线的性能验证双重评估指标DeepPCB采用mAP平均精度率和F-score双重评估体系确保模型在精度和实用性之间取得平衡mAP综合衡量检测准确性的核心指标考虑所有置信度阈值F-score平衡精度与召回率的实用指标更适合产线部署场景评估流程实践上图展示了基于DeepPCB训练的模型检测结果。绿色边界框表示检测到的缺陷区域每个框上标注了缺陷类型和置信度。这种可视化方式有助于直观理解模型性能。评估脚本位于evaluation/目录中使用方式如下# 准备检测结果 python generate_results.py --model your_model.pth --data PCBData/ # 运行评估 cd evaluation python script.py -sres.zip -ggt.zip # 可选参数调整 python script.py -sres.zip -ggt.zip -p{IOU_CONSTRAINT: 0.5}评估要求检测结果格式为x1,y1,x2,y2,confidence,type其中IoU阈值为0.33。正确的检测需要满足检测框与真实标注框的IoU大于阈值且类型匹配。 快速价值验证立即开始的实践步骤第一步环境搭建与数据获取# 克隆项目仓库 git clone https://gitcode.com/gh_mirrors/de/DeepPCB cd DeepPCB # 安装依赖示例 pip install torch torchvision opencv-python Pillow numpy第二步数据探索与理解# 快速查看数据集结构 import os def explore_dataset(): base_path PCBData # 查看分组结构 groups [d for d in os.listdir(base_path) if os.path.isdir(os.path.join(base_path, d))] print(f数据集包含 {len(groups)} 个分组) # 统计样本数量 train_samples [] with open(os.path.join(base_path, trainval.txt), r) as f: train_samples [line.strip() for line in f] test_samples [] with open(os.path.join(base_path, test.txt), r) as f: test_samples [line.strip() for line in f] print(f训练验证集: {len(train_samples)} 个样本) print(f测试集: {len(test_samples)} 个样本)第三步基线模型训练推荐从简单的基线模型开始快速验证数据质量import torch import torch.nn as nn from torch.utils.data import DataLoader class PCBDataset(torch.utils.data.Dataset): PCB缺陷检测数据集 def __init__(self, base_path, splittrain): self.base_path base_path self.split split self.samples self._load_samples() def __len__(self): return len(self.samples) def __getitem__(self, idx): # 实现数据加载逻辑 pass # 创建数据加载器 dataset PCBDataset(PCBData, splittrain) dataloader DataLoader(dataset, batch_size32, shuffleTrue) # 训练简单模型 model SimpleDetectionModel() optimizer torch.optim.Adam(model.parameters(), lr0.001) for epoch in range(10): for batch in dataloader: # 训练逻辑 pass⚡ 性能优化从实验室到产线的关键技巧推理速度优化在工业部署中推理速度至关重要。以下优化策略可显著提升性能模型量化使用INT8量化减少模型大小提升推理速度TensorRT优化针对NVIDIA GPU的推理加速多尺度推理针对不同尺寸缺陷的优化检测内存优化策略class MemoryEfficientLoader: 内存高效的数据加载器 def __init__(self, data_dir, batch_size16): self.data_dir data_dir self.batch_size batch_size def on_the_fly_augmentation(self, image): 实时数据增强减少内存占用 # 实现轻量级增强 pass def lazy_loading(self, sample_ids): 惰性加载按需读取数据 # 实现按需加载逻辑 pass 标注工具高质量数据的基础保障DeepPCB配套提供了完整的PCB缺陷标注工具位于tools/PCBAnnotationTool/目录中。该工具采用Qt框架开发具有以下核心特性双图对比显示同时展示模板图像与测试图像便于精确对比智能标注辅助支持六种缺陷类型的矩形框标注提供标注建议批量处理能力支持大规模图像序列的连续标注质量控制机制内置标注一致性检查和错误检测标注工具的使用流程导入图像对模板图像和测试图像选择缺陷类型进行标注调整边界框位置和大小导出标准格式的标注文件 避坑指南常见问题与解决方案问题1类别不平衡导致的模型偏置现象模型对某些缺陷类型检测效果差解决方案使用Focal Loss或Class-balanced Loss实施过采样或欠采样策略调整损失函数中的类别权重问题2小目标检测困难现象针孔等小尺寸缺陷漏检率高解决方案使用特征金字塔网络FPN增加高分辨率特征图采用多尺度训练策略问题3过拟合问题现象训练集表现好测试集表现差解决方案实施更强的数据增强使用Dropout和权重衰减采用早停策略 扩展思路基于DeepPCB的二次开发领域自适应技术将DeepPCB学到的知识迁移到特定PCB类型class DomainAdaptationModel: 领域自适应模型 def __init__(self, source_model, target_data): self.source_model source_model self.target_data target_data def fine_tune(self, learning_rate1e-4): 在目标领域微调 # 实现领域自适应逻辑 pass合成数据生成基于物理模型生成更多训练样本class PCBSyntheticDataGenerator: PCB合成数据生成器 def generate_defect(self, template_image, defect_type): 生成指定类型的合成缺陷 # 基于PCB设计规则生成缺陷 pass def augment_dataset(self, original_samples, multiplier10): 扩展数据集规模 # 批量生成合成数据 pass 性能基准与对比分析基于DeepPCB训练的先进模型可以达到以下性能水平模型架构mAP (%)F-score (%)推理速度 (FPS)参数量 (M)YOLOv5s96.896.21427.2Faster R-CNN97.597.03841.5RetinaNet97.196.75236.7EfficientDet-D096.596.0983.9论文模型98.698.26225.3性能对比显示论文模型在精度和速度之间取得了最佳平衡。对于实时检测场景YOLOv5s提供了最佳的推理速度对于精度优先的场景Faster R-CNN或论文模型是更好的选择。 适用边界什么场景下不建议使用DeepPCB尽管DeepPCB是一个优秀的PCB缺陷检测数据集但在以下场景中需要谨慎使用特殊PCB类型柔性PCB、高频PCB等特殊材料的缺陷模式可能不同极端环境条件高温、高湿等极端环境下的缺陷特征可能变化新型缺陷类型数据集未覆盖的新型缺陷需要额外标注超高精度要求某些军事或医疗应用可能需要更高精度的标注 行动指南立即开始你的PCB缺陷检测项目第一步评估项目需求在开始之前请明确目标缺陷类型是否在六种范围内可接受的检测精度和速度要求可用的计算资源GPU内存、推理硬件第二步选择合适的模型架构根据需求选择边缘部署MobileNetV3 SSD服务器部署ResNet50 FPN Faster R-CNN平衡方案EfficientNet RetinaNet第三步实施迭代优化遵循快速原型→评估→优化的迭代流程使用预训练模型快速建立基线在DeepPCB测试集上评估性能分析失败案例针对性优化重复直到满足性能要求第四步部署与监控部署后持续监控建立误检/漏检日志系统定期更新模型以适应产线变化建立A/B测试框架验证改进效果 总结DeepPCB的工程价值DeepPCB不仅是一个数据集更是一个完整的PCB缺陷检测解决方案框架。它提供了从数据采集、标注、训练到评估的全链路工具链帮助研究者和工程师快速构建工业级检测系统。数据集的核心价值体现在工业级质量高分辨率图像和精确标注完整生态配套工具和评估体系实践导向基于真实工业场景设计持续演进支持二次开发和领域适应无论您是学术研究者探索新的检测算法还是工业工程师优化产线检测系统DeepPCB都能为您提供坚实的数据基础和工程实践参考。立即开始使用DeepPCB加速您的PCB缺陷检测项目从概念验证到产线部署的全过程。技术提示建议从基线模型开始逐步优化。先确保在DeepPCB测试集上达到满意性能再进行领域适应和产线部署。数据集中的标注工具和评估脚本是宝贵的工程资产充分利用它们可以大幅减少开发时间。注意事项本数据集仅供研究使用。商业应用需获得相应授权。数据集贡献自论文《On-line PCB Defect Detector On A New PCB Defect Dataset》请在使用时注明出处。【免费下载链接】DeepPCBA PCB defect dataset.项目地址: https://gitcode.com/gh_mirrors/de/DeepPCB创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关文章:

DeepPCB:工业级PCB缺陷检测数据集的工程化实践指南

DeepPCB:工业级PCB缺陷检测数据集的工程化实践指南 【免费下载链接】DeepPCB A PCB defect dataset. 项目地址: https://gitcode.com/gh_mirrors/de/DeepPCB 印刷电路板(PCB)作为现代电子设备的"神经系统",其质量…...

实战指南:在自定义数据集上微调Gold-YOLO-Nano,兼顾精度与速度(环境配置+训练技巧)

实战指南:在自定义数据集上微调Gold-YOLO-Nano,兼顾精度与速度 当目标检测遇上边缘计算设备,开发者们总在寻找那个微妙的平衡点——既要模型足够轻量以适应资源限制,又要保持足够的精度满足业务需求。Gold-YOLO-Nano作为NeurIPS …...

不只是仿真:解锁Icarus Verilog (iverilog) 在Windows上的三个隐藏用法(语法检查/转VHDL/库管理)

解锁Icarus Verilog在Windows中的高阶应用:从语法检查到混合语言开发 在数字电路设计领域,Verilog作为主流硬件描述语言之一,其开发工具链的灵活运用往往能大幅提升工作效率。虽然大多数工程师熟悉Icarus Verilog(iverilog&#x…...

深入pdf.js源码:从‘传参’看C#如何灵活控制PDF渲染(url vs data流实战)

深入pdf.js源码:从‘传参’看C#如何灵活控制PDF渲染(url vs data流实战) 在C#全栈开发中,PDF文件的动态渲染一直是业务系统的高频需求。当基础功能无法满足复杂场景时,开发者往往陷入两难:要么依赖现成解决…...

MPU6050 DMP库移植踩坑全记录:从I2C通信失败到欧拉角飘移的解决方案

MPU6050 DMP库移植实战:从硬件调试到数据优化的完整解决方案 1. 硬件连接与I2C通信问题排查 移植MPU6050 DMP库时,硬件连接问题往往是最先遇到的障碍。许多开发者习惯直接复制原理图,却忽略了几个关键细节: 上拉电阻配置误区 I…...

B站字幕下载终极指南:3分钟学会免费提取CC字幕的完整方法

B站字幕下载终极指南:3分钟学会免费提取CC字幕的完整方法 【免费下载链接】BiliBiliCCSubtitle 一个用于下载B站(哔哩哔哩)CC字幕及转换的工具; 项目地址: https://gitcode.com/gh_mirrors/bi/BiliBiliCCSubtitle 还在为无法保存B站视频字幕而烦恼吗&#xf…...

别再死记硬背了!用这5个真实业务场景彻底搞懂Flink Watermark与状态管理

别再死记硬背了!用这5个真实业务场景彻底搞懂Flink Watermark与状态管理 最近在技术社区看到不少开发者抱怨Flink的状态管理和时间语义太难理解——文档里的概念像"Watermark"、"Checkpoint"、"Keyed State"看着都认识,一…...

Fan Control完整教程:Windows风扇智能控制终极指南

Fan Control完整教程:Windows风扇智能控制终极指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/Fa…...

3大核心功能完全掌握:electerm跨平台远程管理终极指南

3大核心功能完全掌握:electerm跨平台远程管理终极指南 【免费下载链接】electerm 📻Terminal/ssh/sftp/ftp/telnet/serialport/RDP/VNC/Spice client(linux, mac, win) 项目地址: https://gitcode.com/gh_mirrors/el/electerm 你是否厌倦了在不同…...

FPGA开发效率翻倍!Quartus II 这几个隐藏设置和窗口管理技巧,你知道吗?

FPGA开发效率翻倍!Quartus II 这几个隐藏设置和窗口管理技巧,你知道吗? 作为一名FPGA开发者,你是否经常在Quartus II中感到效率低下?界面混乱、窗口丢失、重复操作消耗大量时间?今天我要分享的这几个隐藏技…...

想用Anti-UAV数据集练手无人机跟踪?这份保姆级下载、标注与使用指南请收好

Anti-UAV数据集实战:从零开始掌握无人机多模态跟踪技术 无人机跟踪技术正在成为计算机视觉领域的热点研究方向。对于刚接触这个领域的研究者和开发者来说,Anti-UAV数据集提供了一个绝佳的实践平台。这个多模态数据集不仅包含常规的RGB视频,还…...

打造专属瑜伽海报!雯雯的后宫-造相Z-Image模型在内容创作中的实战应用

打造专属瑜伽海报!雯雯的后宫-造相Z-Image模型在内容创作中的实战应用 1. 引言:AI瑜伽海报创作新体验 在内容创作领域,视觉素材的重要性不言而喻。对于瑜伽教练、健康博主和内容创作者来说,高质量的专业瑜伽图片往往是稀缺资源。…...

别再硬算偏微分方程了!用Python和PyTorch搭建你的第一个PINN模型(附完整代码)

用Python和PyTorch实战物理信息神经网络:从零搭建PINN模型求解Burgers方程 在传统数值计算领域,求解偏微分方程往往需要复杂的网格划分和迭代计算。但今天,我们将探索一种革命性的方法——物理信息神经网络(PINN)&…...

告别纯CNN时代?从YOLOv12的‘区域注意力’看目标检测架构的融合趋势

YOLOv12如何重新定义实时目标检测的边界 当YOLOv12在T4 GPU上以1.64毫秒的推理速度实现40.6%的mAP时,整个计算机视觉社区都意识到:实时目标检测的游戏规则正在被改写。这不仅仅是另一个增量式改进,而是标志着注意力机制首次在实时检测领域真正…...

Rust Trait 对象的内存布局

Rust Trait对象的内存布局探秘 Rust作为一门注重安全与性能的系统级语言,其Trait对象是实现运行时多态的核心机制。理解Trait对象的内存布局,不仅能帮助开发者写出更高效的代码,还能避免因类型擦除带来的潜在问题。本文将深入剖析Trait对象在…...

PVE里Windows Server卡成PPT?别急着换硬件,先检查这两个虚拟设备

PVE环境下Windows Server性能优化实战:从卡顿到流畅的关键策略 如果你在PVE虚拟化平台上运行Windows Server时遭遇了令人抓狂的卡顿——远程桌面像翻PPT一样迟缓,系统响应慢得让人怀疑人生,甚至怀疑是不是该升级硬件了。别急着下单买新设备&…...

LeagueAkari:英雄联盟玩家的终极效率工具,3大核心技术革新游戏体验

LeagueAkari:英雄联盟玩家的终极效率工具,3大核心技术革新游戏体验 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit Lea…...

Python 协程任务分发架构设计

Python协程任务分发架构设计:高并发处理的优雅之道 在当今高并发的互联网场景下,如何高效处理海量异步任务成为开发者关注的焦点。Python的协程机制,凭借轻量级线程和事件循环的特性,为任务分发提供了全新思路。通过协程架构设计…...

你的Unity项目卡顿吗?可能是模型面数超标了!用这个脚本快速排查性能瓶颈

Unity性能优化实战:如何快速揪出模型面数超标的"性能杀手" 当你的Unity项目开始出现卡顿、加载缓慢或内存占用过高时,模型面数往往是首要怀疑对象。一个高面数模型可能拖垮整个场景的性能表现,特别是在移动端或VR设备上。本文将分享…...

Figma中文汉化插件终极指南:3分钟告别英文界面困扰

Figma中文汉化插件终极指南:3分钟告别英文界面困扰 【免费下载链接】figmaCN 中文 Figma 插件,设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 还在为Figma的英文界面而烦恼吗?作为一名中文设计师&#xff…...

UE5蓝图实战:用VaRest插件5分钟搞定天气API调用与JSON数据解析

UE5蓝图实战:用VaRest插件5分钟搞定天气API调用与JSON数据解析 在游戏开发中,实时数据集成已经成为提升玩家体验的重要手段之一。想象一下,你的开放世界游戏能够根据现实世界的天气变化动态调整游戏内的气候效果,或者你的城市模拟…...

Windows文件管理新境界:ApkShellext2让应用包文件一目了然

Windows文件管理新境界:ApkShellext2让应用包文件一目了然 【免费下载链接】apkshellext Show app icons in windows explorer 项目地址: https://gitcode.com/gh_mirrors/ap/apkshellext 在Windows资源管理器中,您是否曾为区分各种应用包文件而…...

Mac上Maven编译报错?别急着换Lombok版本,先检查你的JDK和Maven版本匹配

Mac上Maven编译报错?别急着换Lombok版本,先检查你的JDK和Maven版本匹配 作为一名长期在MacOS环境下进行Java开发的工程师,我遇到过无数次Maven编译报错的情况。其中最令人头疼的莫过于java.lang.ExceptionInInitializerError: com.sun.tools.…...

别再只用默认样式了!Element UI el-tag 的 5 种高级玩法,让你的后台标签更出彩

解锁Element UI el-tag的5种高阶玩法:让后台标签设计脱颖而出 在后台管理系统开发中,标签组件看似简单却承担着关键的信息分类与状态展示功能。Element UI的el-tag组件提供了开箱即用的基础样式,但大多数开发者仅停留在type/size等基础属性的…...

告别卡顿!Jetson Nano上优化VNC远程桌面的完整配置指南(基于Ubuntu 18.04)

Jetson Nano远程桌面性能优化实战:从卡顿到流畅的终极指南 在嵌入式开发领域,Jetson Nano凭借其强大的AI计算能力和紧凑的尺寸,成为众多开发者的首选平台。然而,当需要通过VNC远程操作图形界面时,许多用户都会遇到令人…...

实战深度解析:Armbian系统在Amlogic S912等芯片上的完整移植指南

实战深度解析:Armbian系统在Amlogic S912等芯片上的完整移植指南 【免费下载链接】amlogic-s9xxx-armbian Supports running Armbian on Amlogic, Allwinner, and Rockchip devices. Support a311d, s922x, s905x3, s905x2, s912, s905d, s905x, s905w, s905, s905l…...

Java的Switch表达式中的箭头语法与传统case语句在代码风格上的演进

Java语言在长期演进中不断优化语法结构,其中Switch表达式的箭头语法与传统case语句的对比尤为典型。从JDK 12引入预览特性到JDK 14正式落地,箭头语法通过更简洁的形式改变了开发者处理多分支逻辑的方式。这种演进不仅提升了代码可读性,还反映…...

TCExam在线考试系统完整安装使用指南:从零到一的快速部署教程

TCExam在线考试系统完整安装使用指南:从零到一的快速部署教程 【免费下载链接】tcexam TCExam is a CBA (Computer-Based Assessment) system (e-exam, CBT - Computer Based Testing) for universities, schools and companies, that enables educators and traine…...

用STM32和TFT屏做个点菜机:从硬件接线到菜单逻辑的完整实战(附源码)

STM32TFT点菜机实战:从硬件搭建到交互逻辑的全流程解析 在餐饮行业数字化转型的浪潮中,自助点餐终端正逐渐取代传统纸质菜单。对于嵌入式开发者而言,用STM32微控制器搭配TFT液晶屏打造一套点菜系统,不仅能巩固硬件驱动开发能力&am…...

Yahoo Finance API 终极指南:.NET 金融数据获取的完整解决方案

Yahoo Finance API 终极指南:.NET 金融数据获取的完整解决方案 【免费下载链接】YahooFinanceApi A handy Yahoo! Finance api wrapper, based on .NET Standard 2.0 项目地址: https://gitcode.com/gh_mirrors/ya/YahooFinanceApi 在当今的金融科技领域&…...