TexturePacker图集制作全攻略:从原理到Unity/Cocos自动化集成实战
最近在开发一个2D游戏项目时遇到了一个棘手的问题美术同学给了一堆零散的图片文件需要将它们高效地整合成一个图集Sprite Sheet以优化游戏性能。手动拼接不仅耗时还容易出错。经过一番探索我发现了TexturePacker这款强大的工具它几乎成了游戏开发者的标配。但网上很多教程要么版本老旧要么只讲基础操作对于如何与不同引擎如Unity、Cocos、自定义引擎深度集成以及如何自动化处理批量图集讲得不够透彻。本文将以TexturePacker为核心为你带来一份从零基础入门到项目级实战的完整指南。无论你是独立开发者还是团队中的技术美术都能从中找到从环境配置、基础使用、命令行自动化到与各大引擎无缝对接的解决方案。我们将通过一个完整的“kit图集UwU”示例项目手把手带你走完全流程并附上避坑指南和最佳实践确保你的图集工作流既高效又可靠。1. 背景与核心概念为什么我们需要图集在深入操作之前我们首先要理解图集Sprite Sheet/Texture Atlas是什么以及它为何如此重要。1.1 什么是图集图集简单来说就是将许多小图片精灵Sprites合并到一张大图片中的技术。这张大图片包含了所有原始小图的像素数据并附带一个数据文件通常是.json,.plist等记录了每个小图在大图中的位置、尺寸、偏移等信息。1.2 图集解决了什么问题减少Draw Call绘制调用这是最核心的优化。在渲染时GPU切换纹理Texture是一个相对耗时的操作。如果每个精灵都用单独的图片文件渲染引擎就需要为每一个精灵进行一次纹理切换即一次Draw Call。而使用图集后所有精灵共享同一张纹理引擎可以在一次Draw Call中批量渲染多个精灵极大提升了渲染效率。节省内存和存储空间多个小图片文件会有各自的文件头信息和可能未被利用的空白像素由于纹理尺寸通常需要是2的幂次方。打包成图集可以更好地利用纹理空间减少内存碎片和总体内存占用。同时项目中的文件数量也大大减少便于管理。加速资源加载加载一个包含100个精灵的大图集比分别加载100个小图片文件要快得多减少了IO操作和网络请求对于Web项目尤为重要。1.3 TexturePacker 简介TexturePacker 是一款专业的2D精灵打包工具它采用多种高级算法如MaxRects, Guillotine等来最大化图集的空间利用率。它支持几乎所有主流游戏引擎和框架的数据格式输出并提供了强大的命令行工具非常适合集成到自动化构建流程中。2. 环境准备与版本说明工欲善其事必先利其器。在开始之前请确保你的环境准备就绪。2.1 操作系统TexturePacker 支持 Windows、macOS 和 Linux。本文演示将以macOS和Windows 10为主但核心操作在所有平台通用。2.2 软件安装TexturePacker GUI用于可视化编辑和调试。下载访问 TexturePacker 官网下载对应系统的安装包。版本本文基于TexturePacker v6.10.0GUI版本进行演示。新版本界面可能略有不同但核心功能一致。许可证TexturePacker 提供免费版功能受限和付费版。对于学习和中小项目免费版通常足够。商业项目建议购买许可证以支持开发者并解锁高级功能。TexturePacker CLI命令行工具用于自动化构建这是项目集成的关键。安装GUI版本时通常会自动安装命令行工具TexturePacker。验证安装打开终端macOS/Linux或命令提示符/PowerShellWindows输入以下命令TexturePacker --version如果显示版本号如TexturePacker 6.10.0则说明安装成功。如果未找到命令你可能需要将TexturePacker的安装目录添加到系统的PATH环境变量中。2.3 示例项目结构我们将创建一个名为KitAtlasDemo的示例项目。请先在任意位置创建如下目录结构KitAtlasDemo/ ├── assets_raw/ # 原始散图资源 │ ├── character/ │ │ ├── walk_01.png │ │ ├── walk_02.png │ │ └── ... │ ├── ui/ │ │ ├── button_normal.png │ │ ├── button_pressed.png │ │ └── ... │ └── props/ │ ├── sword.png │ └── shield.png ├── scripts/ # 构建脚本 ├── output/ # 图集输出目录由工具生成 │ ├── atlas.png │ ├── atlas.json │ └── ... └── README.md你可以从网上下载一些免费的精灵图或者自己用画图工具创建一些简单的32x32或64x64的PNG图片放入assets_raw的相应子文件夹中。3. 核心功能与配置拆解打开TexturePacker GUI你会看到一个主界面。我们重点讲解几个核心区域和配置。3.1 资源添加与精灵设置添加资源直接将assets_raw文件夹拖入TexturePacker的“Sprites”面板它会自动递归添加所有支持的图片文件。精灵设置Sprite Settings修剪Trim自动移除图片四周的透明像素可以节省图集空间。强烈建议开启。但要注意如果你的引擎需要保持精灵原始尺寸例如用于碰撞检测则需要记录修剪信息。旋转Rotate允许工具旋转精灵以更好地填充空间。大多数引擎都支持旋转后的精灵数据。尺寸限制Size constraints可以设置精灵的最大/最小尺寸。3.2 纹理设置Texture Settings这是配置图集本身属性的地方。尺寸Size算法Algorithm选择打包算法。MaxRects是最常用且效果很好的算法。最大尺寸Max size设置图集宽高的上限如2048x2048。如果所有精灵无法放入一张图集TexturePacker会自动创建多张图集图集集Sprite Sheet Set。尺寸Size可以固定尺寸如1024x1024或设置为POT2的幂次方GPU友好或NPOT非2的幂次方某些现代GPU也支持。内边距Padding在精灵之间添加几个像素的间隔防止纹理采样时出现“ bleeding”颜色渗漏现象。通常设置为2。输出Output纹理格式Texture format选择PNG无损带透明度或WebP/ASTC等压缩格式取决于目标平台。图像格式Image format选择颜色深度如RGBA8888。DDS/PVRTC 压缩针对特定平台如iOS的PVRTC的纹理压缩可以大幅减少包体大小和内存占用。3.3 数据文件设置Data File Settings这里配置如何生成描述图集的数据文件。数据格式Data format这是最关键的选项必须与你的游戏引擎匹配。json(hash)通用格式Cocos Creator, Phaser, 自定义引擎常用。json(array)另一种JSON格式。plistCocos2d-x, SpriteKit 常用。libgdxLibGDX 框架专用。unityUnity 专用的.meta文件格式需要安装Unity插件才能完美工作。数据文件Data file指定数据文件的输出路径和名称如./output/atlas.json。纹理文件Texture file指定图集图片的输出路径和名称如./output/atlas.png。4. 完整实战案例创建“kit图集UwU”现在我们以“kit图集UwU”这个主题用两种方式创建图集GUI手动操作和CLI自动化脚本。4.1 GUI 手动创建与发布新建项目打开TexturePacker点击File - New。添加资源将KitAtlasDemo/assets_raw/文件夹拖入Sprites面板。配置纹理设置算法MaxRects最大尺寸2048x2048尺寸约束选择POT内边距2纹理格式PNG图像格式RGBA8888配置数据文件数据格式选择json (hash)假设我们用于一个自定义的HTML5游戏引擎。数据文件点击文件夹图标选择KitAtlasDemo/output/atlas.json。纹理文件自动会关联到同一目录下的atlas.png你可以检查一下。发布点击顶部工具栏的Publish按钮。TexturePacker会开始打包并在状态栏显示打包效率和图集尺寸。完成后在output文件夹中你会看到atlas.png和atlas.json。4.2 查看数据文件用文本编辑器打开atlas.json你会看到类似下面的结构。它精确描述了每个精灵在图集中的位置。{ frames: { character/walk_01.png: { frame: {x: 2, y: 402, w: 64, h: 64}, rotated: false, trimmed: true, spriteSourceSize: {x: 0, y: 0, w: 64, h: 64}, sourceSize: {w: 64, h: 64}, pivot: {x: 0.5, y: 0.5} }, ui/button_normal.png: { frame: {x: 128, y: 2, w: 128, h: 64}, ... } // ... 其他精灵 }, meta: { image: atlas.png, size: {w: 1024, h: 1024}, scale: 1 } }frame: 精灵在图集中的矩形区域。rotated: 是否被旋转。trimmed: 是否被修剪。spriteSourceSizesourceSize: 修剪相关的信息用于将精灵绘制回原始大小。4.3 CLI 命令行自动化对于项目开发我们不可能每次美术更新资源都手动打开GUI操作。这时就需要命令行工具。创建构建脚本在KitAtlasDemo/scripts/目录下创建文件build_atlas.sh(macOS/Linux) 或build_atlas.bat(Windows)。build_atlas.sh (macOS/Linux):#!/bin/bash # 脚本使用TexturePacker命令行工具构建图集 PROJECT_ROOT$(cd dirname $0/..; pwd) RAW_ASSETS_DIR$PROJECT_ROOT/assets_raw OUTPUT_DIR$PROJECT_ROOT/output TP_COMMAND/Applications/TexturePacker.app/Contents/MacOS/TexturePacker # 请根据你的安装路径修改 # 确保输出目录存在 mkdir -p $OUTPUT_DIR echo 开始打包图集... $TP_COMMAND \ --data $OUTPUT_DIR/atlas.json \ --sheet $OUTPUT_DIR/atlas.png \ --format json-hash \ --algorithm MaxRects \ --max-size 2048 \ --size-constraints POT \ --padding 2 \ --trim-mode Trim \ --enable-rotation \ --texture-format png \ $RAW_ASSETS_DIR/ if [ $? -eq 0 ]; then echo 图集构建成功输出至$OUTPUT_DIR ls -la $OUTPUT_DIR/ else echo 图集构建失败 exit 1 fibuild_atlas.bat (Windows):echo off REM 脚本使用TexturePacker命令行工具构建图集 set PROJECT_ROOT%~dp0.. set RAW_ASSETS_DIR%PROJECT_ROOT%\assets_raw set OUTPUT_DIR%PROJECT_ROOT%\output set TP_COMMANDC:\Program Files\CodeAndWeb\TexturePacker\bin\TexturePacker.exe REM 请根据你的安装路径修改 REM 确保输出目录存在 if not exist %OUTPUT_DIR% mkdir %OUTPUT_DIR% echo 开始打包图集... %TP_COMMAND% ^ --data %OUTPUT_DIR%\atlas.json ^ --sheet %OUTPUT_DIR%\atlas.png ^ --format json-hash ^ --algorithm MaxRects ^ --max-size 2048 ^ --size-constraints POT ^ --padding 2 ^ --trim-mode Trim ^ --enable-rotation ^ --texture-format png ^ %RAW_ASSETS_DIR%\ if %ERRORLEVEL% EQU 0 ( echo 图集构建成功输出至%OUTPUT_DIR% dir %OUTPUT_DIR% ) else ( echo 图集构建失败 exit /b 1 )修改路径将脚本中的TP_COMMAND路径修改为你电脑上TexturePacker可执行文件的实际路径。运行脚本macOS/Linux: 在终端中先给脚本添加执行权限chmod x scripts/build_atlas.sh然后运行./scripts/build_atlas.sh。Windows: 双击运行build_atlas.bat或在命令提示符中切换到脚本目录运行它。你将看到与GUI操作相同的输出结果。这个脚本可以轻松集成到你的构建系统如Jenkins, GitHub Actions或IDE的构建前命令中。5. 与不同游戏引擎集成生成图集和数据文件后下一步就是在游戏引擎中使用它们。5.1 在自定义引擎/Web使用Canvas中加载假设你有一个简单的HTML5游戏可以使用以下JavaScript代码加载和使用图集// atlasLoader.js class AtlasLoader { constructor(atlasJsonPath, imagePath) { this.atlasData null; this.image new Image(); this.image.src imagePath; this.sprites {}; fetch(atlasJsonPath) .then(response response.json()) .then(data { this.atlasData data; console.log(图集数据加载完成); // 可以在这里触发游戏启动 }); } getSpriteFrame(spriteName) { if (!this.atlasData) return null; return this.atlasData.frames[spriteName]; } drawSprite(ctx, spriteName, x, y) { const frame this.getSpriteFrame(spriteName); if (!frame || !this.image.complete) return; const f frame.frame; // 注意Canvas的drawImage参数顺序为 (image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight) ctx.drawImage( this.image, f.x, f.y, f.w, f.h, // 源矩形在图集中 x, y, f.w, f.h // 目标矩形在画布上 ); } } // 使用示例 // const loader new AtlasLoader(output/atlas.json, output/atlas.png); // 在游戏循环中loader.drawSprite(gameCtx, character/walk_01.png, 100, 100);5.2 在Unity中使用对于Unity有更便捷的方式安装TexturePacker Importer从Asset Store下载或从TexturePacker安装目录导入TexturePackerImporter.unitypackage。直接使用.tps项目文件在TexturePacker GUI中保存你的配置为一个.tps项目文件。将这个.tps文件放入Unity项目的Assets文件夹。Unity会自动识别并生成对应的图集和精灵资源你可以在Inspector中直接配置每个精灵的Pivot、Border等。使用生成的图片和数据如果不使用Importer你可以将atlas.png导入Unity将其Texture Type设置为Sprite (2D and UI)Sprite Mode设置为Multiple。然后点击Sprite Editor选择Slice将Type改为Automatic并加载你的atlas.json文件来自动切割精灵。5.3 在Cocos Creator中使用Cocos Creator 原生支持TexturePacker的JSON (hash)格式。将atlas.png和atlas.json一起拖入Cocos Creator的Assets面板。Cocos Creator会自动将atlas.png识别为图集资源Sprite Atlas。在代码或属性检查器中你可以通过精灵帧路径如character/walk_01来引用具体的精灵。// TypeScript 示例 import { _decorator, Component, Sprite, SpriteFrame } from cc; const { ccclass, property } _decorator; ccclass(Player) export class Player extends Component { property(SpriteFrame) walkFrame: SpriteFrame null; // 可以在编辑器里拖拽赋值 // 或者动态加载 start() { const sprite this.getComponent(Sprite); // 资源路径相对于 resources 文件夹 resources.load(atlas/character/walk_01/spriteFrame, SpriteFrame, (err, spriteFrame) { if (err) { console.error(err); return; } sprite.spriteFrame spriteFrame; }); } }6. 常见问题与排查思路在使用TexturePacker和集成图集的过程中你可能会遇到以下问题问题现象常见原因解决思路图集打包后精灵周围出现杂色Bleeding内边距Padding设置过小或为0在纹理采样时相邻精灵的像素被错误采样。增加Padding值通常2-4像素。确保图集纹理的Filter模式在引擎中不是Point无过滤时检查此问题。在引擎中精灵显示错位或拉伸1. 数据文件格式与引擎期望的格式不匹配。2. 精灵被修剪Trim后引擎未正确处理spriteSourceSize和sourceSize。3. 图集图片尺寸不是2的幂次方NPOT而引擎或GPU不支持。1. 检查TexturePacker输出的数据格式是否与引擎要求一致如json-hash vs json-array。2. 在引擎加载代码中确保使用trimmed、sourceSize等数据来正确计算绘制矩形。或者在TexturePacker中关闭Trim选项。3. 在TexturePacker中将Size constraints设置为POT。命令行工具执行失败提示“command not found”TexturePacker CLI的安装路径未添加到系统的PATH环境变量中。1. 找到TexturePacker可执行文件的绝对路径如/usr/local/bin/TexturePacker或C:\Program Files\...\TexturePacker.exe。2. 在脚本中使用绝对路径调用它或者将其所在目录添加到PATH。图集打包效率低空白区域多精灵尺寸差异极大且未启用旋转。1. 在TexturePacker中启用Enable rotation。2. 尝试不同的打包算法如MaxRects换成Basic或Polygon如果支持多边形打包。3. 考虑将尺寸差异过大的精灵分组打包到不同的图集中。Unity中导入图集后精灵Pivot点不对TexturePacker中设置的Pivot点Anchor point与Unity的Sprite的Pivot设置不匹配。1. 在TexturePacker的Sprite Settings中统一设置Pivot如0.5, 0.5表示中心。2. 使用TexturePacker的Unity Importer它可以在导入时同步Pivot信息。3. 在Unity的Sprite Editor中手动调整。WebGL游戏中图集加载后渲染为黑色1. 图片未完全加载就开始渲染。2. 跨域问题如果图集放在不同域名下。1. 确保在图片的onload事件触发后再进行绘制。2. 确保图片服务器设置了正确的CORS头或使用同域资源。7. 最佳实践与工程建议将图集集成到生产管线中需要考虑更多工程化因素。资源分类与多图集策略按功能模块分类将UI图片、角色动画、场景图块分别打包到不同的图集如ui_atlas.png,hero_atlas.png,tile_atlas.png。这符合按需加载的原则。按使用频率分类将启动时必须的精灵如加载界面打包到“基础图集”将关卡资源打包到“关卡图集”实现动态加载和卸载。控制单图集尺寸虽然可以打包成4096x4096但需要考虑低端设备的显存和纹理尺寸限制。2048x2048是一个比较安全的通用尺寸。命名规范原始图片文件使用清晰的、有结构的命名如hero_attack_01.png,btn_shop_normal.png。这会使数据文件中的键名key更有意义便于在代码中引用。避免使用空格和特殊字符。版本控制与自动化将.tps项目文件纳入版本控制这样团队所有成员都能使用完全相同的设置打包图集。在CI/CD中集成在构建服务器如Jenkins, GitLab CI上安装TexturePacker CLI并在构建脚本中调用它。确保美术提交原始图片后自动化的构建流程能生成最新的图集。使用Makefile或npm scripts在项目根目录创建Makefile或package.json脚本简化构建命令。例如在package.json中添加{ scripts: { build:atlas: node scripts/run-texturepacker.js } }然后运行npm run build:atlas即可。性能与质量权衡纹理压缩针对目标平台如Android的ETC2iOS的PVRTC/ASTCWeb的WebP启用纹理压缩能显著减少包体和内存占用但会损失一些画质。需要根据项目需求测试决定。禁用Mipmaps对于2D游戏通常不需要Mipmaps用于3D场景中远处物体的纹理优化禁用它可以节省内存。合理设置颜色深度如果图片不需要透明度使用RGB888而非RGBA8888如果颜色简单甚至可以尝试RGBA4444或RGB565来减少内存。与动画系统结合角色动画的序列帧如walk_001.png到walk_010.png一定要按顺序命名并打包到同一个图集中。这样在引擎的动画编辑器中可以方便地通过通配符或序列选择来创建动画剪辑。通过本文的梳理你应该已经掌握了使用TexturePacker创建和集成图集的完整流程。从理解其核心价值到环境配置、GUI/CLI操作再到与不同引擎的对接和工程化实践这套工作流能显著提升你的2D项目开发效率与运行性能。关键在于根据项目特点制定合适的资源分类策略和自动化构建方案。下次当美术同学又丢给你一堆“kit图集UwU”素材时你就可以从容不迫地将其转化为高性能的游戏资源了。

相关新闻

开发者必备:GitHub免费资源库free-for-dev实战指南

开发者必备:GitHub免费资源库free-for-dev实战指南

这次我们来看一个对开发者、初创团队和个人项目特别实用的资源集合:free-for-dev。这个项目在 GitHub 上拥有超过 12.9 万颗星,核心价值在于它系统性地整理了互联网上各类云服务、开发工具、API 和平台的免费套餐或免费层(Free Tier&#xff…

2026/10/20 7:42:11 阅读更多 →
商汤SenseNova免费Token领取与API调用全攻略:从注册到实战应用

商汤SenseNova免费Token领取与API调用全攻略:从注册到实战应用

1. 项目概述:商汤SenseNova的“公测红利”最近AI圈子里有个消息传得挺广,商汤的SenseNova大模型平台正在公测,而且放出了一个相当有吸引力的福利:0元/月的免费Token额度。对于咱们这些开发者、创业者,或者单纯想尝鲜体…

2026/10/19 4:44:03 阅读更多 →
光伏+储能项目IRR提升策略与经济效益分析

光伏+储能项目IRR提升策略与经济效益分析

1. 项目背景与行业现状光伏储能项目在近两年迎来了爆发式增长。根据中国光伏行业协会数据,2022年我国分布式光伏新增装机量达到51.1GW,同比增长74.5%。但与此同时,行业也面临着收益率普遍偏低的问题。大多数分布式光伏项目的内部收益率&#…

2026/10/19 4:44:03 阅读更多 →

最新新闻

黑客松新手参赛全指南:从组队选题到路演避坑的48小时实战手册

黑客松新手参赛全指南:从组队选题到路演避坑的48小时实战手册

黑客松这三个字,技术圈里没人陌生,但“年轻人的第一场黑客松”这个定位,加上联合12所顶尖学府的环球赛制,还是让我这种参加过不少场次的老选手眼前一亮。不是每个新人都敢第一次参赛就挑战高强度、跨时区、多赛区的活动&#xff0…

2026/10/20 7:42:11 阅读更多 →
Postman便携版三步上手指南:从解压到Newman自动化测试

Postman便携版三步上手指南:从解压到Newman自动化测试

写接口测试这么多年,我用过的工具少说也有五六个,但最常用的还是Postman。前阵子帮一个新来的同事排查环境问题,发现他卡在安装上——公司电脑权限受限,安装包根本写不进系统目录。后来我让他直接换成便携版,五分钟就开…

2026/10/20 7:42:11 阅读更多 →
PySpark String转向量:三种核心方法及实践避坑指南

PySpark String转向量:三种核心方法及实践避坑指南

做数据开发的同学应该都有过这种经历:辛辛苦苦清洗好的DataFrame,里面明明躺着一个看起来非常规整的字符串列,比如"1,2,3,4"或者分类标签"apple,banana,cherry",想着直接丢进MLlib里训练一把模型,…

2026/10/20 7:42:11 阅读更多 →
Spark字符串特征转向量:稀疏与稠密向量方案详析

Spark字符串特征转向量:稀疏与稠密向量方案详析

我记得刚开始用Spark做用户画像特征时,最常遇到的一件事就是:表里一堆字符串标签,比如城市、渠道、品类,要送给LR或者树模型去训练,但算法根本不认“北京”“上海”这种文本,得先转成数值甚至向量。很多新手…

2026/10/20 7:42:11 阅读更多 →
从工具焦虑到组织赋能:AI学习进阶路径与实践指南

从工具焦虑到组织赋能:AI学习进阶路径与实践指南

1. 先看清“工具焦虑”的本质:你不是学不会,是路径没拉开我见过太多人卡在同一个地方:今天听说某某大模型出了新功能,赶紧去试;明天看到别人用AI做了一个很炫的Demo,又觉得自己落后了;后天刷到一…

2026/10/20 7:42:11 阅读更多 →
Postgres-XL GTM节点部署管理与高可用运维实战

Postgres-XL GTM节点部署管理与高可用运维实战

接手任何一套Postgres-XL集群,我第一件事永远是去查GTM那层,而不是先看Coordinator和Datanode。很多人觉得GTM就是个发号器,配置文件里填个IP就行,直到线上出现交易卡死、事务号断层、快照错乱,才回头承认这玩意儿才是…

2026/10/20 7:41:10 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →