基于Arduino与PN532的NFC门禁系统DIY:从原理到实践
1. 项目缘起从“刷不开门”到“自己造门”的折腾之路那天晚上我抱着一堆资料站在公司楼下对着那台冰冷的门禁读卡器怎么刷工牌都没反应。保安大哥走过来轻描淡写地说“卡消磁了吧明天找行政补办。” 那一刻除了尴尬一个念头冒了出来这玩意儿到底是怎么工作的我能不能自己搞一个不是为了破解什么纯粹是出于一个技术人的好奇心和“手痒”——想彻底弄明白从卡片靠近到“滴”一声开门这背后到底发生了什么。这就是“模拟门禁-NFC标签注册和刷卡”这个项目的起点。它不是一个教你如何破解小区或公司门禁的教程而是一个深度还原与学习NFC近场通信技术在门禁场景中核心工作流程的动手实验。通过这个项目你可以用极低的成本几十块钱搭建一套属于自己的、完全可控的微型门禁系统。你会亲手完成从空白NFC标签的写入模拟发卡到用手机或卡片模拟刷卡再到验证逻辑的完整闭环。这个过程能让你透彻理解UID、NDEF数据格式、读写器工作模式、以及最简单的“白名单”验证逻辑这些正是真实门禁系统的简化版核心。无论你是物联网爱好者、嵌入式新手还是对身边技术充满好奇的开发者这个项目都能带你越过“黑盒”亲手触摸到无线射频识别RFID与NFC技术在实际应用中的脉搏。我们不用复杂的门禁控制器就用最常见的Arduino或ESP32和一个PN532 NFC读写模块从零开始把“刷卡开门”这件事自己实现一遍。2. 核心装备解析为什么是PN532Arduino这个组合工欲善其事必先利其器。在开始接线和写代码之前我们得搞清楚手头工具的能力边界和选型理由。市面上NFC/RFID模块很多从廉价的RC522到更专业的PN532甚至集成度更高的模块为什么我强烈推荐从PN532开始2.1 PN532不止于“读卡”更是全功能NFC枢纽RC522是很多入门项目的首选便宜但它主要支持Mifare Classic这类高频13.56MHzRFID卡通信协议层面更底层。而PN532不同它是一个集成了NFC功能的微控制器支持三种NFC工作模式读卡器/写入器模式、卡模拟模式、点对点模式。这意味着兼容性极广它不仅支持Mifare Classic还支持Mifare Ultralight、NTAG系列就是我们常用的NFC标签、Felica日本常用甚至可以通过底层指令与更多类型卡片通信。这为我们模拟不同类型的门禁卡提供了可能。直接支持NDEF格式NDEF是NFC数据交换格式的标准。很多手机APP如NFC Tools写入的信息就是NDEF格式。PN532有库函数可以直接读写NDEF记录而不用我们去手动拼接复杂的字节块大大降低了开发难度。集成度高芯片内部处理了相当部分的射频通信协议让我们可以通过简单的串口、I2C或SPI命令与之交互把精力集中在应用逻辑上。2.2 Arduino/ESP32灵活的逻辑控制中心门禁系统不只是读卡还要判断“这张卡能不能开我这扇门”。这个判断逻辑我们称之为“访问控制逻辑”需要一个小型计算设备来完成。Arduino Uno简单可靠ESP32则功能更强大且自带Wi-Fi/蓝牙为未来扩展如联网验证、日志上传留足空间。在这个项目中它们扮演“大脑”角色负责驱动并指令PN532模块进行读卡操作。接收PN532读取到的卡片唯一标识符UID或NDEF数据。将读取到的信息与内部存储的“已授权列表”进行比对。根据比对结果控制一个继电器模块模拟电控锁的通断。可选通过串口打印调试信息或驱动一个显示屏显示状态。2.3 其他关键配角继电器模块这是连接数字世界和物理世界的桥梁。Arduino的引脚输出5V/3.3V、几十毫安的小电流根本无法驱动一把12V的电控锁。继电器就是一个用弱电控制强电的电子开关。当授权通过Arduino给继电器一个高电平信号继电器内部触点吸合相当于接通了电控锁的电源回路。NFC标签/卡片这是我们的“钥匙”。建议准备几种一张Mifare Classic卡深蓝色芯片复杂可加密、几张NTAG213或215的贴纸成本低存储空间适中兼容性好。不同类型的卡UID的读取方式和数据存储结构略有不同正好用于对比学习。杜邦线与面包板用于快速、无焊连接。注意安全与法律边界本项目所有操作均在你自己购买、完全拥有的设备上进行目的是学习技术原理。绝对禁止尝试读取、复制或模拟你无权管理的他人门禁卡、银行卡、身份证等这不仅是非法的也可能对相关系统造成干扰。我们学习的目的是创造和加固而非破坏。3. 硬件连接与基础环境搭建让设备“对话”现在让我们把硬件组装起来并让Arduino能够指挥PN532。这里以PN532通过I2C接口与Arduino Uno连接为例因为I2C接线简单仅需4根线且库支持完善。3.1 物理接线图接线表Arduino Uno 引脚PN532 模块引脚说明5VVCC供电GNDGND共地A4 (SDA)SDAI2C数据线A5 (SCL)SCLI2C时钟线继电器模块的连接Arduino Uno 引脚继电器模块说明数字引脚 D8IN控制信号输入5VVCC供电注意继电器模块电压GNDGND共地电控锁以12V常闭锁为例连接电源适配器 (12V)继电器电控锁正极 ()COM端红线负极 (-)黑线共地常开端 (NO)电控锁另一线接线逻辑当D8输出高电平继电器吸合COM与NO接通12V电路闭合电控锁动作开门。平时D8低电平电路断开锁处于关闭状态。3.2 软件库安装与基础测试在Arduino IDE中我们需要一个关键的库来与PN532对话。最常用的是Adafruit_PN532库。打开Arduino IDE点击“工具” - “管理库...”。在搜索框中输入“Adafruit PN532”。找到并安装由Adafruit维护的版本。安装时通常会提示你一并安装依赖的Adafruit_BusIO库点击确认即可。安装完成后我们可以用一个最简单的示例代码来测试硬件连接是否正常。打开“文件” - “示例” - “Adafruit PN532” - “readMifareClassic”。这个示例专读Mifare卡但我们可以用它来测试通信。在上传代码前务必检查并修改两处在代码开头的#define PN532_IRQ (2)和#define PN532_RESET (3)这两行如果你的模块没有连接IRQ和RESET引脚我们只用了I2C需要将其注释掉并使用Adafruit_PN532 nfc(PN532_I2C_ADDRESS, Wire);这个构造函数。示例代码通常有I2C初始化的部分仔细找找。修改后将代码上传到Arduino打开串口监视器波特率115200。当你将一张Mifare Classic卡片靠近PN532模块时你应该能在串口看到打印出的卡片UID一组4字节或7字节的十六进制数如0xDE 0xAD 0xBE 0xEF。如果能看到UID恭喜你最关键的通信链路已经打通如果没看到请依次检查接线是否牢固、库是否安装正确、模块供电是否充足有时需要外部供电、代码中的I2C地址是否正确默认是0x24。4. 核心环节一NFC标签的“注册”数据写入在真实的门禁系统中“注册”就是物业将你的卡号录入系统白名单。在我们的模拟系统里这一步就是向一个空白的NFC标签或卡片写入我们系统认可的特定数据。我们将设计两种常见的“钥匙”格式4.1 方案A仅验证UID卡号这是最简单、也是最不安全的方案因为很多卡的UID是出厂固化且可读的。但作为学习原理的第一步它非常直观。 我们的操作是读取空白标签的UID然后将这个UID手工添加到Arduino代码里的授权数组里。实际上对于UID我们通常不“写入”而是“读取并记录”。因为标准Mifare Classic卡的UID是不可更改的。但对于一些UID可写的卡片或NTAG标签我们可以用PN532将其UID改写为我们指定的值。这里以记录UID为例// 在Arduino代码中定义一个授权UID列表 byte authorizedUIDs[][4] { {0xDE, 0xAD, 0xBE, 0xEF}, // 这是你第一张卡的UID {0x12, 0x34, 0x56, 0x78} // 这是你第二张卡的UID }; int numAuthorized 2; // 授权卡的数量如何获取UID就是上面基础测试步骤里用读卡示例代码从串口监视器里抄下来的那串十六进制数。4.2 方案B写入并验证NDEF文本记录更接近一些智能门禁的做法在卡片里写入特定的文本信息如员工号、房间号。安全性稍好因为需要知道写入的格式和内容。 我们需要用PN532向标签写入一个NDEF格式的文本记录。这里使用Adafruit_PN532库的NDEF相关函数会非常方便。#include Adafruit_PN532.h #include Wire.h Adafruit_PN532 nfc(PN532_I2C_ADDRESS, Wire); void setup() { Serial.begin(115200); nfc.begin(); // ... 初始化PN532 ... // 准备要写入的NDEF消息一个文本记录 const char* website ROOM:101; // 模拟的房间号信息 // 库函数会帮我们打包成NDEF格式 bool success nfc.ntag2xx_WriteNDEFURI(0, NTAG_URI_HTTP_WWW, website, strlen(website)); // 参数说明从块地址0开始写URI类型为HTTP写入的内容内容长度 // 注意ntag2xx_WriteNDEFURI 主要针对NTAG系列标签对于Mifare Classic需要其他方法。 if (success) { Serial.println(NDEF URI Record written successfully!); } else { Serial.println(Write failed!); } } void loop() {}这段代码会将字符串ROOM:101以NDEF URI格式写入到NTAG标签的起始块。写入后你可以用手机上的“NFC Tools”APP去读取这个标签应该能看到一个网址链接内容是http://www.ROOM:101。虽然看起来是网址但我们只是利用了URI这个标准格式来存储自定义字符串。实操心得写入前的关键检查在调用写入函数前务必先执行nfc.tagPresent()检查标签是否在位并获取标签类型。因为针对Mifare Classic和NTAG的写入函数是不同的。盲目写入可能导致标签数据混乱。对于Mifare Classic写入需要先验证扇区密钥过程更复杂建议新手先从NTAG标签玩起。5. 核心环节二“刷卡”验证与门锁控制逻辑的实现“注册”完成后我们就有了“钥匙”。现在要编写系统的“大脑”程序实现循环读卡、验证、控制继电器这一套流程。5.1 主循环逻辑设计整个系统的核心是一个状态机在loop()函数中不断循环检测标签调用nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, uidLength)。这个函数会等待一段时间可配置如果有符合ISO14443A标准即Mifare、NTAG等的卡片进入射频场它就会把卡的UID读出来存到uid数组里并返回true。决策验证路径读卡成功后我们需要决定用哪种方式验证这把“钥匙”。路径一UID验证直接将读取到的uid数组与代码中预存的authorizedUIDs数组进行逐字节比对。匹配成功则授权通过。路径二NDEF验证如果UID验证不通过或者我们想优先进行NDEF验证则调用nfc.ntag2xx_ReadNDEF()或类似的读NDEF函数尝试从标签中读取NDEF消息。然后解析这个消息检查其中的文本内容是否等于我们预设的字符串如ROOM:101。执行动作与反馈授权通过在串口打印“Access Granted!”控制数字引脚D8输出高电平digitalWrite(RELAY_PIN, HIGH);继电器吸合模拟开门通常开门后需要保持几秒钟delay(5000);然后断开继电器digitalWrite(RELAY_PIN, LOW);模拟锁闭。授权拒绝在串口打印“Access Denied!”可以控制一个红色LED闪烁或者让蜂鸣器响一声作为提示。清理与等待完成一次操作后需要一个小延迟delay(300);并确保PN532模块准备好进行下一次读卡避免连续误触发。5.2 代码结构示例融合两种验证#include Adafruit_PN532.h #include Wire.h #define RELAY_PIN 8 Adafruit_PN532 nfc(PN532_I2C_ADDRESS, Wire); // 授权UID列表 byte authorizedUIDs[][4] {{0xDE, 0xAD, 0xBE, 0xEF}}; int numAuthorized 1; // 授权的NDEF文本内容 String authorizedNDEFText ROOM:101; void setup() { Serial.begin(115200); pinMode(RELAY_PIN, OUTPUT); digitalWrite(RELAY_PIN, LOW); // 初始确保锁关闭 nfc.begin(); uint32_t versiondata nfc.getFirmwareVersion(); if (!versiondata) { Serial.println(PN532 not found!); while (1); } nfc.SAMConfig(); // 配置读卡器模式 Serial.println(System Ready. Waiting for NFC tag...); } void loop() { uint8_t uid[] {0, 0, 0, 0, 0, 0, 0}; uint8_t uidLength; // 1. 尝试读取卡片UID bool success nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, uidLength, 100); // 超时100ms if (!success) { return; // 没读到卡继续循环 } Serial.print(Card detected! UID: ); nfc.PrintHex(uid, uidLength); // 2. 验证路径先检查UID bool isAuthorized false; for (int i 0; i numAuthorized; i) { if (memcmp(uid, authorizedUIDs[i], 4) 0) { // 假设都是4字节UID isAuthorized true; Serial.println(UID Authorized!); break; } } // 3. 如果UID未授权尝试NDEF验证针对NTAG标签 if (!isAuthorized) { Serial.println(UID not in list, trying NDEF read...); // 注意这里需要根据标签类型调用不同的读NDEF函数以下为简化逻辑 // 实际中应先判断标签类型再调用 nfc.ntag2xx_ReadNDEF() 等函数 // 假设我们读取到一个字符串 readText String readText readNDEFTextFromTag(); // 这是一个需要你实现的函数 if (readText authorizedNDEFText) { isAuthorized true; Serial.println(NDEF Text Authorized!); } } // 4. 执行动作 if (isAuthorized) { Serial.println(*** ACCESS GRANTED ***); digitalWrite(RELAY_PIN, HIGH); // 开门 delay(5000); // 开门保持5秒 digitalWrite(RELAY_PIN, LOW); // 关门 } else { Serial.println(*** ACCESS DENIED ***); // 可以在这里添加声光报警 tone(9, 1000, 500); // 蜂鸣器在引脚9响500ms } delay(1000); // 操作完成后等待一段时间防止重复触发 }这段代码框架展示了融合两种验证方式的逻辑。你需要根据实际使用的标签类型完善readNDEFTextFromTag()函数的具体实现。6. 深度排查与进阶优化从“能用”到“好用”项目基本跑通后你会遇到一些“坑”解决它们的过程正是水平提升的关键。6.1 常见问题与排查链路问题一读卡不稳定时灵时不灵。排查思路供电这是最常见的原因。Arduino的USB口或板载5V输出可能功率不足尤其在驱动继电器动作时会产生电压波动。尝试给Arduino和继电器模块分别独立供电或者使用一个输出电流大于2A的5V电源适配器。天线干扰PN532模块的天线区域那圈铜线不要靠近金属物体或电源线。确保标签平行贴近天线中心区域。代码超时readPassiveTargetID的超时时间示例中的100ms太短可能错过读卡。太长又会降低响应速度。可以调整到200-300ms试试。标签类型确认你的代码是针对你使用的标签类型Mifare Classic 或 NTAG编写的。用读Mifare的代码去读NTAG可能无法正确识别。问题二无法写入NDEF数据到标签。排查链路标签是否支持确认你的标签是可写的。Mifare Classic 1K卡0扇区0块存放UID和厂商信息是只读的其他扇区需要先验证密钥A/B才能写。NTAG213/215/216的存储区基本都是可写的。标签是否已锁有些标签在出厂或经过某些操作后会被“锁死”变成只读。尝试用手机APP如NFC Tools先读一下看是否能写入。函数用对了吗ntag2xx_WriteNDEFURI只适用于NTAG系列。对于Mifare Classic你需要先mifareclassic_AuthenticateBlock验证扇区密钥默认密钥通常是0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF或0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5然后再用mifareclassic_WriteNDEFURI写入过程繁琐很多。写保护位在写入NDEF数据时有些库函数会自动设置“写保护”防止数据被篡改。一旦设置这个标签就无法再写入新的NDEF数据了但可以读。这是特性不是bug。问题三验证逻辑误判。场景明明写入的是“ROOM:101”读出来对比却失败。排查字符串对比要小心从标签读出的NDEF数据经过解析后得到的字符串末尾可能包含不可见的换行符或结束符。使用String类的trim()方法去除首尾空白字符后再对比。更好的做法是将授权字符串定义为字符数组char array并使用strcmp()函数进行精确对比。6.2 进阶优化思路一个基础系统跑通后你可以从以下几个方向让它变得更“像”一个真实可用的系统增加管理功能通过串口输入命令来动态添加/删除授权UID或NDEF文本而不用每次都修改代码、重新上传。例如串口输入ADD_UID DEADBEEF来添加一张新卡。引入显示屏接一个OLED屏实时显示“等待刷卡”、“验证中”、“欢迎101室”、“拒绝访问”等状态体验感立刻提升。实现“卡模拟”这是PN532的另一个强大模式。你可以让PN532模拟成一张卡片然后用你的手机去读它。这需要更复杂的底层指令控制但能让你理解双向通信。联网与日志如果使用ESP32可以轻松连接Wi-Fi。每次刷卡事件时间、UID、结果都可以上传到私有服务器或物联网平台如ThingsBoard、Home Assistant实现远程日志查看和权限管理。安全性探讨我们目前方案的安全性非常弱。真实门禁系统使用Mifare Classic卡时会启用每个扇区的密钥验证甚至进行双向认证3DES/AES。你可以研究mifareclassic_AuthenticateBlock函数尝试使用非默认密钥体验一下“加密扇区”的读写过程这会让你对门禁卡的“安全”有更具体的认识。最后一点个人体会做完这个项目你再路过门禁时眼光都会不一样。你会知道那“滴”一声背后是射频场在耦合能量是卡片在反射编码后的UID是读卡器在解调信号并与后台列表比对。技术的神秘感消失了取而代之的是一种清晰的掌控感。这种通过亲手搭建来解构日常技术黑盒的过程正是嵌入式开发和物联网学习中最有魅力的部分。从最简单的UID比对开始到NDEF数据读写再到未来可能尝试的加密验证每一步深入的探索都在你和技术原理之间架起一座更坚实的桥梁。

相关新闻

亲子科技启蒙:用Boson Kit打造智能循光避障小车的完整实践

亲子科技启蒙:用Boson Kit打造智能循光避障小车的完整实践

1. 项目缘起:从“玩”到“学”的亲子科技启蒙 “爸爸,我们今天玩什么?” 这句话几乎成了我和女儿周末下午的固定开场白。作为一个在科技行业摸爬滚打了十几年的从业者,我深知“玩”对于孩子认知世界的重要性,尤其是当“…

2026/7/29 16:01:46 阅读更多 →
Intel Edison嵌入式开发全解析:从硬件架构到项目实战与迁移指南

Intel Edison嵌入式开发全解析:从硬件架构到项目实战与迁移指南

1. 项目概述:为什么我们今天还要聊Intel Edison? 几年前,当Intel Edison开发板第一次出现在创客和嵌入式开发者的视野里时,它确实掀起了一阵不小的波澜。一个邮票大小的计算模块,集成了双核Atom处理器、Quark微控制器、…

2026/7/29 16:00:46 阅读更多 →
电致发光涂料LumiLor:原理、施工与跨界应用全解析

电致发光涂料LumiLor:原理、施工与跨界应用全解析

1. 从“灯”到“面”:重新定义发光材料 如果你对汽车改装、舞台美术或者创意设计领域有所关注,最近几年可能会频繁听到一个词:“电致发光”。这和我们熟悉的LED灯带、霓虹灯管完全不同。传统的发光方案,无论是LED还是霓虹灯&#…

2026/7/29 16:00:46 阅读更多 →

最新新闻

K8s Secret 管理进阶:从 Base64 到 External Secrets Operator

K8s Secret 管理进阶:从 Base64 到 External Secrets Operator

K8s Secret 管理进阶:从 Base64 到 External Secrets OperatorK8s Secret 的 Base64 编码不是加密——任何人拿到 Secret 文件都能解码。你的密码其实在裸奔。一、场景痛点 你的 K8s 集群用原生 Secret 存数据库密码、API Key、TLS 证书。Secret 的数据是 Base64 编…

2026/7/29 16:09:50 阅读更多 →
基于扩散模型的音频生成:与自回归方法的架构差异与取舍

基于扩散模型的音频生成:与自回归方法的架构差异与取舍

基于扩散模型的音频生成:与自回归方法的架构差异与取舍音频生成不是"文字生成换个数据格式"——扩散模型和自回归模型在音频上的取舍完全不同。一、场景痛点 你需要一个音频生成模型。自回归模型(如 MusicLM、AudioLM)生成的音频连…

2026/7/29 16:09:50 阅读更多 →
10分钟掌握EPUB编辑器:在浏览器中制作专业电子书的完整指南

10分钟掌握EPUB编辑器:在浏览器中制作专业电子书的完整指南

10分钟掌握EPUB编辑器:在浏览器中制作专业电子书的完整指南 【免费下载链接】EPubBuilder 一款在线的epub格式书籍编辑器 项目地址: https://gitcode.com/gh_mirrors/ep/EPubBuilder 你是否曾经想要制作自己的电子书,却被复杂的EPUB格式和专业的桌…

2026/7/29 16:09:50 阅读更多 →
SOLIDWORKS PLM专业版:打破协作壁垒,驱动研发创新

SOLIDWORKS PLM专业版:打破协作壁垒,驱动研发创新

‍ 当下,产品结构愈发复杂,市场对研发周期的要求不断收紧,跨学科、跨系统、跨设备的协作,已从企业发展的“加分项”转变为不可或缺的“必选项”。然而,部门间的沟通壁垒、数据流转不畅等问题,往往制约研发…

2026/7/29 16:09:50 阅读更多 →
计算机毕业设计之基于springboot的宠物领养管理系统

计算机毕业设计之基于springboot的宠物领养管理系统

如今,在科学技术飞速发展的情况下,信息化的时代也已因为计算机的出现而来临,信息化也已经影响到了社会上的各个方面。它可以为人们提供许多便利之处,可以大大提高人们的工作效率。随着计算机技术的发展的普及,各个领域…

2026/7/29 16:09:50 阅读更多 →
C++ constexpr:编译期计算的核心机制与工程实践

C++ constexpr:编译期计算的核心机制与工程实践

1. 项目概述:为什么我们需要 constexpr ? 如果你写过一段时间的 C,尤其是接触过一些性能要求比较高的项目,或者尝试过编写一些模板元编程的代码,那你大概率遇到过这样的场景:你希望一个值在编译时就确定下…

2026/7/29 16:08:49 阅读更多 →

日新闻

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

一、本文介绍 🔥本文在RT-DETR多模态融合目标检测中引入RLAB残差线性注意力模块,可在不同模态特征交互阶段进行多次残差细化,使可见光、红外等特征在尺度、语义和空间位置上更好对齐;随后将细化特征与解码器输出拼接并生成Q、K、V,通过线性注意力自适应强化关键通道、目…

2026/7/29 0:00:23 阅读更多 →
AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础

AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础

AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础 在上一期「AI编程系列」中,我们学习了如何构建一个基础的 AI 问答系统,通过简单的输入输出让模型回应问题。但现实世界中的 AI 应用往往需要处理更复杂的场景:…

2026/7/29 0:00:23 阅读更多 →
AI智能体开发实战:从工具调用到企业级部署

AI智能体开发实战:从工具调用到企业级部署

1. 从被动问答到主动执行:AI Agent的范式转变过去两年,大语言模型最显著的应用形态是聊天机器人——用户提问,AI回答。但真正的生产力革命发生在2023年下半年:当AI学会主动调用工具完成任务时,生产力工具的历史被彻底改…

2026/7/29 0:00:23 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/28 12:04:22 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/29 15:00:03 阅读更多 →

月新闻