Arduino极简电子琴制作:从零搭建,理解数字信号与声音合成
1. 项目概述用Arduino搭建你的第一台电子琴如果你对电子制作和音乐都感兴趣但又觉得两者结合的门槛太高那么这个项目就是为你量身定做的。今天我们来聊聊如何用一块最常见的Arduino开发板加上几个简单的元件亲手搭建一台能真正演奏的极简电子琴。这不仅仅是一个玩具更是一个理解数字信号、模拟输入和声音合成原理的绝佳实践。整个过程不需要复杂的电路知识也不需要昂贵的设备核心思想就是“极简”——用最少的零件实现最核心的功能。无论你是刚接触Arduino的创客新手还是想找一个周末就能完成的趣味项目这个电子琴都能让你在动手的乐趣中收获满满的成就感。2. 核心思路与方案设计2.1 为什么选择“极简”路线在开始动手之前我们先明确设计目标。市面上有很多复杂的电子琴方案涉及多个八度、和弦、甚至MIDI输出。但对于入门项目而言复杂意味着更高的失败率和更长的调试时间。“极简”路线的核心优势在于成本极低核心控制器Arduino Uno是创客圈最普及的开发板价格亲民。其他元件如按键、电阻、蜂鸣器总成本可能不超过一杯奶茶钱。成功率高电路连接简单代码逻辑清晰几乎不存在无法排查的硬件问题非常适合建立初学者的信心。原理清晰剥离了所有外围功能只保留“按键触发 - 发出对应音高”这一最核心的链路有助于我们聚焦于理解Arduino如何读取输入和控制输出。基于此我们的设计方案定为使用多个物理按键作为琴键每个按键对应一个固定的音符频率。当按下某个键时Arduino检测到该按键的输入随即通过一个无源蜂鸣器输出对应频率的方波从而发出该音符的声音。2.2 核心元件选型与原理1. 主控Arduino Uno这是项目的“大脑”。我们选择它是因为其IO口数量足够本项目需要多个数字输入口接按键一个数字输出口接蜂鸣器社区资源丰富编程环境Arduino IDE对新手极其友好。它的核心是一块ATmega328P微控制器能够轻松处理我们所需的扫描按键和产生PWM脉冲宽度调制信号的任务。2. 发声元件无源蜂鸣器这里有“有源”和“无源”之分务必注意有源蜂鸣器内部自带振荡电路通电就会以固定频率鸣叫无法控制音高。而无源蜂鸣器相当于一个微型喇叭需要外部输入不同频率的电信号才能发出不同音调。因此我们必须使用无源蜂鸣器这样才能通过改变Arduino输出方波的频率来改变音高。3. 输入元件轻触按键选择最普通的四脚轻触按键即可。它的原理是按下时内部触点导通松开时断开。我们需要通过电路设计让Arduino能明确区分“按下”和“松开”两种状态。4. 关键配角下拉电阻这是保证按键信号稳定的核心元件。Arduino的IO口在悬空即什么都不接时其电平状态是未知的可能是高也可能是低极易受环境干扰导致误触发。我们采用“下拉电阻”方案将按键的一端接VCC5V另一端通过一个10kΩ的电阻接地GND同时将按键与电阻的连接点接到Arduino的IO口。这样当按键未按下时IO口通过电阻被“拉”到低电平0V当按键按下时VCC直接连接到IO口使其变为高电平5V。Arduino通过检测这个电平变化就能判断按键状态。3. 硬件电路搭建详解3.1 电路连接图与清单首先我们列出所需全部元件Arduino Uno开发板 x1无源蜂鸣器 x1轻触按键 x8对应8个音符例如C大调的1, 2, 3, 4, 5, 6, 7, i10kΩ电阻 x8每个按键配一个下拉电阻面包板 x1杜邦线公对公若干电路连接遵循以下原则电源将面包板的“正极轨”连接到Arduino的5V引脚“负极轨”连接到GND引脚。蜂鸣器将无源蜂鸣器的正极通常引脚较长通过一根杜邦线连接到Arduino的某个数字引脚例如引脚8。负极直接连接到面包板的负极轨GND。注意虽然蜂鸣器工作电流不大但为了养成好习惯可以在正极串联一个100Ω的限流电阻避免意外。按键电路以其中一个为例按键的一个引脚连接到面包板的正极轨5V。按键的另一个引脚同时连接到一根10kΩ电阻的一端和一根杜邦线。该10kΩ电阻的另一端连接到面包板的负极轨GND。那根杜邦线的另一端连接到Arduino的一个数字输入引脚例如引脚2。其余7个按键完全按照此方式连接分别接到Arduino的数字引脚3至9。提示在面包板上布局时建议将8个按键排成一行模拟钢琴的白键这样更直观也方便后续演奏。3.2 连接过程中的避坑指南区分蜂鸣器类型再次强调务必确认你用的是无源蜂鸣器。可以用万用表电阻档测一下正反接电阻都较大如16Ω以上的一般是无源的如果电阻很小几欧姆且有正负极标识可能是有源的。按键抖动问题机械按键在按下和松开的瞬间金属触点会发生物理弹跳导致在几毫秒内电平快速变化多次。如果不处理Arduino会误认为按下了很多次。这个问题我们主要在软件中通过“消抖”逻辑解决但硬件上确保连接牢固也能减少干扰。共地是关键务必确保Arduino的GND、面包板的负极轨、所有下拉电阻的接地端、蜂鸣器的负极都连接在同一个“地”上这是电路正常工作的基础。引脚分配规划提前规划好哪个引脚对应哪个音符并在代码中用常量定义好这样后期调试和修改会非常方便。4. 软件编程与核心逻辑实现4.1 音符频率的定义音乐中的每个音高都对应一个物理上的振动频率。国际标准音A4的频率是440Hz。根据十二平均律我们可以计算出其他音符的频率。为了简化我们直接定义一组C大调的音符频率单位Hz#define NOTE_C4 262 // 中央C #define NOTE_D4 294 #define NOTE_E4 330 #define NOTE_F4 349 #define NOTE_G4 392 #define NOTE_A4 440 #define NOTE_B4 494 #define NOTE_C5 523 // 高八度C4.2 主程序逻辑与代码解析完整的Arduino代码如下我们将逐段解析其逻辑// 1. 引脚与频率定义 const int speakerPin 8; // 蜂鸣器连接引脚 // 定义琴键引脚和对应音符 const int keyPins[] {2, 3, 4, 5, 6, 7, 8, 9}; // 假设8个按键连接的引脚 const int notes[] {NOTE_C4, NOTE_D4, NOTE_E4, NOTE_F4, NOTE_G4, NOTE_A4, NOTE_B4, NOTE_C5}; const int keyNum 8; // 琴键数量 // 2. 按键状态跟踪变量 int keyStates[8]; // 当前引脚状态 int lastKeyStates[8] {LOW}; // 上一次引脚状态 long lastDebounceTime[8] {0}; // 上次消抖时间 long debounceDelay 50; // 消抖延时毫秒 void setup() { // 初始化串口用于调试可选 Serial.begin(9600); // 初始化蜂鸣器引脚为输出 pinMode(speakerPin, OUTPUT); // 初始化所有琴键引脚为输入模式 for (int i 0; i keyNum; i) { pinMode(keyPins[i], INPUT); } Serial.println(电子琴初始化完成); } void loop() { // 循环扫描所有琴键 for (int i 0; i keyNum; i) { int reading digitalRead(keyPins[i]); // 读取引脚当前电平 // 软件消抖核心逻辑 if (reading ! lastKeyStates[i]) { // 如果读数发生变化重置消抖计时器 lastDebounceTime[i] millis(); } // 判断消抖时间是否已过 if ((millis() - lastDebounceTime[i]) debounceDelay) { // 消抖时间过后确认状态是否稳定 if (reading ! keyStates[i]) { keyStates[i] reading; // 更新稳定状态 // 判断是否为按下动作从LOW变为HIGH if (keyStates[i] HIGH) { playTone(notes[i]); // 播放对应音符 Serial.print(按键按下: Pin ); Serial.print(keyPins[i]); Serial.print(, 频率: ); Serial.println(notes[i]); } else { // 按键释放停止发声 noTone(speakerPin); } } } // 更新上一次的读数状态 lastKeyStates[i] reading; } } // 3. 播放音符的函数 void playTone(int frequency) { tone(speakerPin, frequency); // Arduino内置函数产生指定频率的方波 }代码逻辑拆解初始化 (setup): 设置蜂鸣器引脚为输出所有按键引脚为输入。下拉电阻的配置使得按键未按下时digitalRead读取到的默认值是LOW。主循环 (loop): 这是一个永不停止的循环不断扫描8个按键的状态。软件消抖: 这是代码的精华部分。我们通过时间判断来过滤抖动。reading是当前瞬间读取的引脚电平。lastKeyStates[i]是上一次循环读取的电平。一旦两者不同说明状态可能发生了变化可能是抖动也可能是真按下了我们立刻记录下当前时间 (millis())。然后等待一个短暂的debounceDelay这里设为50毫秒。如果50毫秒后reading的值保持稳定且与之前记录的状态keyStates[i]不同我们才认为这是一个有效的、稳定的状态变化并更新keyStates[i]。触发播放: 只有当稳定的状态变为HIGH按键按下时才调用playTone函数并通过tone()函数让蜂鸣器发出对应频率的声音。当检测到按键释放状态变回LOW时调用noTone()停止发声。tone()函数这是Arduino的核心函数之一它能在指定引脚上生成一个指定频率单位赫兹的占空比为50%的方波。正是这个方波驱动无源蜂鸣器振动产生我们听到的音调。4.3 代码编写与上传实操安装Arduino IDE从Arduino官网下载并安装最新版IDE。安装后在“工具”-“开发板”中选择“Arduino Uno”在“端口”中选择你的Arduino连接的COM口Windows设备管理器中可查看。创建新项目将上面的代码复制到新项目中。编译与上传点击左上角的“√”验证编译代码若无错误再点击“→”上传将程序烧录到Arduino Uno中。串口监视器上传完成后可以打开IDE的“工具”-“串口监视器”设置波特率为9600。当你按下按键时就能看到对应的调试信息输出这非常有助于排查是硬件问题还是软件问题。5. 功能优化与扩展玩法基础版本成功后你可以尝试以下优化让你的电子琴更具可玩性。5.1 增加音量控制目前蜂鸣器的音量是固定的。我们可以通过模拟输入来动态控制音量。增加一个电位器旋钮将电位器两端分别接5V和GND中间引脚接Arduino的某个模拟输入引脚如A0。在代码中使用analogRead(A0)读取电位器的值0-1023。tone()函数本身不能控制音量但我们可以通过控制驱动蜂鸣器的引脚来实现“伪音量”调节。更高级的方法是使用PWM将蜂鸣器接到一个支持PWM的引脚如3, 5, 6, 9, 10, 11然后用analogWrite(pin, value)中的value值0-255来控制输出信号的“平均功率”从而改变响度。但注意tone()函数和analogWrite()在某些引脚上会冲突需要仔细查阅引脚功能表或使用外部电路。一个更简单实用的“音量控制”是添加一个开关串联在蜂鸣器电路上物理静音。5.2 实现按键连奏与延音现在的代码是“一按就响一放就停”像钢琴的断奏。如果想实现按下持续发声、松开才停的连奏效果或者按下后声音持续一段时间的延音效果需要修改逻辑。连奏当前逻辑已是连奏按下发声松开停止。如果想改成“点按切换”模式按一下开再按一下关则需要为每个按键增加一个状态标志位。延音可以设置一个“延音开关”。当延音开启时即使松开按键也不立即调用noTone()而是启动一个计时器让声音持续几百毫秒后再淡出。这需要更复杂的状态管理。5.3 扩展更多琴键与音色8个键太少了想弹奏更多曲子扩展按键Arduino Uno有14个数字IO除去蜂鸣器占用的理论上还能接很多键。但要注意当按键数量超过可用数字口时就需要使用“矩阵键盘”或“模拟键盘”的方案。矩阵键盘将按键排列成行和列通过扫描行列来检测多个按键可以只用7个IO口控制16个键4x4矩阵。模拟键盘利用多个电阻和单个模拟输入口通过测量不同按键按下时产生的不同分压值来识别是哪个键被按下。这种方法节省引脚但对电阻精度有要求且同时只能按下一个键。改变音色tone()函数产生的是纯净的方波音色比较电子化。如果想模拟其他乐器音色理论上需要输出复杂的波形。对于Arduino Uno内存和算力有限但可以尝试使用tone()播放不同占空比的方波需要修改底层库或直接操作寄存器占空比变化会影响音色谐波。预存一段简短的声音采样如钢琴、吉他某个音符的WAV片段通过数模转换DAC或PWM滤波后播放。这需要外接DAC模块或使用更高级的开发板如Arduino Due或ESP32。5.4 添加视觉反馈——LED指示灯为每个琴键搭配一个LED灯按下时LED亮起释放时熄灭增加演奏的互动感和视觉效果。实现方法将LED阳极长脚通过一个220Ω的限流电阻连接到Arduino的另一个数字输出引脚或与按键共用引脚但电路设计需改变。在代码中当检测到按键按下时除了播放声音再用digitalWrite()将对应的LED引脚设为HIGH。6. 常见问题排查与调试心得在实际制作过程中你可能会遇到以下问题这里提供我的排查思路和解决方法。6.1 按下按键没有任何声音这是最常见的问题。请按照以下步骤系统排查检查电源首先确认Arduino的电源指示灯是否亮起。可以用万用表测量5V和GND引脚之间是否有5V电压。检查蜂鸣器确认是无源蜂鸣器用一节电池如1.5V直接触碰蜂鸣器两个引脚如果是无源的会听到轻微的“嗒”声线圈振动如果是有源的会持续响。检查连接确认蜂鸣器正负极没有接反且连接到了代码中指定的speakerPin例如引脚8。检查按键电路测量电平用万用表电压档黑表笔接GND红表笔接按键连接到Arduino引脚的那条线。不按时电压应为0V或接近0V按下时电压应跳变为5V或接近5V。如果不是检查下拉电阻是否接好按键是否损坏VCC是否接通。检查代码确认引脚号检查代码中keyPins数组和speakerPin的定义是否与你的实际接线一致。打开串口监视器这是最强大的调试工具。如果按键按下时串口有正确的调试信息输出如“按键按下: Pin 2, 频率: 262”说明Arduino已经正确检测到按键动作问题可能出在蜂鸣器或tone()函数上。如果没有输出说明按键检测部分有问题。简化测试可以写一个最简单的测试程序单独测试蜂鸣器和按键。例如写一个让蜂鸣器持续响的程序或者写一个检测到按键就点亮板载LED引脚13的程序。6.2 声音失真、沙哑或音量太小蜂鸣器驱动能力Arduino单个IO口的驱动电流有限约20mA。如果蜂鸣器需要的电流较大可能会造成声音失真或音量小。解决方法在蜂鸣器正极和Arduino引脚之间串联一个100-220Ω的电阻虽然会降低一点音量但可以保护IO口。如果需要更大音量必须使用三极管如8050或MOS管来驱动蜂鸣器。电源问题如果使用电脑USB供电当系统负载重时USB口可能无法提供足够稳定的电流。尝试换一个USB口或者使用9V电池适配器为Arduino供电。频率误差tone()函数产生的频率在可听范围内是相当准确的。如果觉得音不准可以对照手机上的调音器APP检查。偏差很大可能是蜂鸣器本身特性或代码中频率常数写错了。6.3 按键响应不灵或串扰消抖时间过长或过短代码中的debounceDelay50毫秒是一个经验值。如果觉得按键反应迟钝可以尝试减小到20毫秒。如果发现有误触发一次按下被识别多次可以增大到80-100毫秒。硬件连接松动面包板使用时间长了孔位可能会变松导致接触不良。用力按紧所有元件和杜邦线或者换一个位置试试。引脚内部上拉我们的电路使用了外部下拉电阻。Arduino芯片内部也有上拉电阻约20kΩ可以通过pinMode(pin, INPUT_PULLUP)启用。如果启用了内部上拉那么外部电路就应该改成按键另一端接地按下时引脚被拉低LOW。切忌同时使用外部下拉和内部上拉这会造成电平冲突。我们的方案统一使用外部下拉所以代码中用的是INPUT模式而非INPUT_PULLUP。代码逻辑错误检查loop()中扫描按键的逻辑特别是数组索引i不要越界确保每个按键的状态变量都是独立更新的。6.4 想保存项目做成一个完整的乐器面包板原型不稳定想做一个能带出去的成品焊接电路购买一块洞洞板万用板将元件按照面包板的布局焊接上去。焊接比面包板连接可靠得多。设计外壳可以用亚克力板激光切割或者用3D打印一个琴键外壳将按键和Arduino固定在里面。甚至可以购买现成的钢琴玩具外壳进行改造。升级供电使用一块9V电池或锂电池组通过Arduino的电源接口或Vin引脚供电使其脱离电脑独立工作。增加音频输出蜂鸣器音质有限。可以增加一个音频放大模块如PAM8403和一个小喇叭将Arduino产生的信号放大播出音质和音量会有巨大提升。甚至可以使用简单的RC滤波电路将方波稍微平滑一下声音会更柔和。这个Arduino极简电子琴项目从构思到实现贯穿了硬件连接、软件编程、调试排错的全过程。它最迷人的地方在于你能清晰地看到每一段代码如何转化为一个具体的物理动作和声音反馈。当你按下第一个键听到它发出准确的音调时那种亲手创造音乐的喜悦是无与伦比的。我建议你在完成基础版本后一定要尝试一两个扩展功能比如加个LED或者电位器这个过程会让你对输入输出的控制有更深的理解。

相关新闻

3步彻底解决XCOM 2模组管理难题:AML启动器完整使用指南

3步彻底解决XCOM 2模组管理难题:AML启动器完整使用指南

3步彻底解决XCOM 2模组管理难题:AML启动器完整使用指南 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/…

2026/7/28 14:28:13 阅读更多 →
半导体设备验收:Buyoff与Release关键流程解析

半导体设备验收:Buyoff与Release关键流程解析

1. 晶圆制造设备验收中的关键概念解析在半导体制造领域,设备验收环节直接关系到生产线的良率与稳定性。Buyoff和Release这两个术语看似简单,实则蕴含着fab厂与设备供应商之间复杂的权责划分。我第一次参与28nm产线设备验收时,就曾因为对这两个…

2026/7/28 14:28:13 阅读更多 →
智能家居节能实践:基于Home Assistant的空调自动化控制方案

智能家居节能实践:基于Home Assistant的空调自动化控制方案

1. 项目概述:从“空调关关”看现代家居的节能与智能控制最近在社区里看到不少朋友在讨论“空调关关”这个概念,乍一听有点摸不着头脑,但仔细一想,这背后其实是我们每个家庭每天都在面对的真实场景。所谓“空调关关”,指…

2026/7/28 14:28:13 阅读更多 →

最新新闻

架构师必备:分布式锁方案选型

架构师必备:分布式锁方案选型

当同时操作共享资源时,需要做并发控制。在单机上用synchronized或ReentrantLock能解决的互斥问题,到了多机部署的分布式环境就行不通了,因为它们只在单个JVM进程内生效,跨多机就需要分布式锁了。 先说结论,最常用的分…

2026/7/28 14:38:17 阅读更多 →
物联网设备电源管理:NBM7100A芯片与低功耗优化实践

物联网设备电源管理:NBM7100A芯片与低功耗优化实践

1. 项目背景与核心挑战在物联网终端设备和便携式医疗设备领域,不可充电的初级电池(如锂亚硫酰氯电池、CR2032纽扣电池)因其高能量密度和超长保存寿命(可达10年以上)成为首选电源方案。但这类电池存在一个鲜为人知的致命…

2026/7/28 14:38:17 阅读更多 →
如何用MemcardRex终极PS1记忆卡编辑器解决存档管理难题

如何用MemcardRex终极PS1记忆卡编辑器解决存档管理难题

如何用MemcardRex终极PS1记忆卡编辑器解决存档管理难题 【免费下载链接】memcardrex Advanced PlayStation 1 Memory Card editor 项目地址: https://gitcode.com/gh_mirrors/me/memcardrex 还在为PS1游戏存档无法跨平台使用而烦恼吗?MemcardRex作为一款专业…

2026/7/28 14:38:17 阅读更多 →
涨薪技术|使用Dockerfile创建镜像

涨薪技术|使用Dockerfile创建镜像

上次的推文内容中介绍了如何使用docker commit的方法来构建镜像,相反推荐使用被称为Dockerfile的定义文件和docker build命令来构建镜像。Dockerfile使用基本的基于DSL语法的指令来构建一个Docker镜像,之后使用docker build命令基于该Dockerfile中的指令…

2026/7/28 14:38:17 阅读更多 →
关于ArrayList  LinkedList remove()方法的一点思考,更改或删除抽象数据类型的值

关于ArrayList LinkedList remove()方法的一点思考,更改或删除抽象数据类型的值

对于基本数据类型和常见的抽象数据类型不做考虑 针对的是由程序编写者创建的抽象数据类型 通过查看API文档,提供了一个remove(Object O)方法** 一. 首先想到的是逐个比较不同节点里的数据,list.remove(index i); ** import java.util.*;/****…

2026/7/28 14:38:17 阅读更多 →
JAVA毕设选题推荐:基于SpringBoot 架构下智能教学辅助咨询系统 人机交互式课程答疑与学习辅助系统【附源码、mysql、文档、调试+代码讲解+全bao等】

JAVA毕设选题推荐:基于SpringBoot 架构下智能教学辅助咨询系统 人机交互式课程答疑与学习辅助系统【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/28 14:37:17 阅读更多 →

日新闻

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…

2026/7/28 0:00:43 阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

做 RAG 的人应该都踩过这个致命的坑:把几百页的财报、法规、技术手册扔给向量库,问一个具体问题,搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了,要么藏在几十条结果的最下面。语义相似≠真正相关,这个…

2026/7/28 0:00:43 阅读更多 →
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

2026年做短视频运营,从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候,每天刷半小时抖音,手动把爆款视频的口播敲进备忘录,一条2分钟的视频得花十来分钟,碰到语速快的还要反复回听。后来试了一圈工具&am…

2026/7/28 0:00:43 阅读更多 →

周新闻

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

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

深度学习道路桥梁裂缝检测系统 数据集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/28 8:29:16 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

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

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

2026/7/28 5:03:42 阅读更多 →

月新闻