Haar级联分类器实战:OpenCV人体上半身检测与参数调优
简介OpenCV 4.x环境下的人体上半身检测级联分类器以XML文件格式保存面向计算机视觉开发者和算法学习者适用于图像与视频流中的头部、肩部、手臂等区域定位可作为智能安防、人机交互、动作分析等应用的目标检测基础组件。压缩包共2个文件核心XML文件为训练好的Haar级联分类器模型另含TXT使用说明整体仅768KB获取后即可快速集成。该模型利用Haar特征与级联结构实现高效检测使用时通常借助cv::CascadeClassifier加载先把输入图像转为灰度图再调用detectMultiScale函数获取候选矩形并可根据场景调整缩放因子、最小检测窗口等参数配套说明文档对加载流程、参数调整与注意事项给出提示能有效减少环境配置与参数调试耗时。目前已有128人学习浏览值得需要快速落地人体检测能力的开发者参考使用。1. 一份常被随手丢过来的压缩包为什么值得单独写一篇haarcascade_upperbody.xml.zip 是 OpenCV 官方预训练的 Haar 级联分类器压缩包解压后只有一个约 24KB 的 XML 文件用来检测画面中的人体上半身——头部加躯干。做人员统计、区域监控、会议室人数统计这类需求时经常有人直接扔一个 zip 过来让顺便用一下但真把它跑进生产立刻会遇到误检、漏检、CPU 爆表这些实际问题。这篇文章就从这份 XML 讲起把背后的 Haar 级联原理、detectMultiScale 参数调优和部署踩坑一次讲清适合正在用手头 CPU 机器做轻量检测、又不想为此引入深度学习框架的人。2. 先把这份 XML 拆开看Haar 级联分类器到底是怎么认出上半身的2.1 解压之后你拿到的是一棵决策树XML 结构速览拿到 haarcascade_upperbody.xml.zip 的第一步永远是解压常见做法是直接 unzipunzip haarcascade_upperbody.xml.zip解压出来只有一个 haarcascade_upperbody.xml。如果你好奇过这份 XML 里到底存的是什么用任意文本编辑器打开就能看到cascade根节点、stageType、feature、rect这些标签。它不像深度学习模型那样是一大堆权重矩阵而是一棵结构清晰的决策树底层定义了几十个 Haar 特征模板每个特征由若干矩形组成并配好阈值上层是几十级强分类器也就是 stage每一级都包含一组特征和对应权重。这份 XML 解析出来后OpenCV 的 CascadeClassifier 会把它读成一张两级查找表先算积分图再逐级判断。加载的代码简短到不像话import cv2 cascade cv2.CascadeClassifier(haarcascade_upperbody.xml) if cascade.empty(): raise RuntimeError(模型加载失败确认 XML 文件存在且未损坏)cv2.CascadeClassifier 的构造函数接受 XML 或 YAML 格式的级联文件返回一个级联分类器对象。empty() 返回 True 说明文件不存在、格式损坏或者 OpenCV 版本不兼容。加载后立刻判空是好习惯否则后续调用 detectMultiScale 会在毫无提示的情况下返回空列表排查起来很费时间。还有一个易踩的细节路径里不要带中文和空格Linux 下文件名大小写敏感这些看似无关的小事在实际部署里最容易卡住人。2.2 积分图让 Haar 特征从理论变成实时要理解这份 XML 为什么能框住上半身核心概念是 Haar 特征。Haar 特征本质上是相邻矩形区域像素和的差值它捕捉的是明暗对比不是颜色也不是形状。比如眼睛区域比脸颊暗、头肩交界处有稳定明暗变化这些都是 Haar 特征能编码的信息。一份训练好的模型里每一级 stage 会在当前滑动窗口上检查若干特征响应响应超过阈值就进入下一级否则直接丢弃。级联结构最妙的地方在于前几级只保留响应最强的特征大部分非目标窗口在很早期就被淘汰所以一张图里绝大多数窗口根本不用跑完全部 stage。上半身的 Haar 特征组合通常表现为头部区域相对亮、两侧肩部对称且比背景暗、头与肩的边界有稳定梯度。模型是在大量标注了上半身的正样本和各类负样本上训练出来的因此对正面或近正面视角最敏感侧身、低头、遮挡都会让响应明显变弱。这是模型的天花板不是参数能救的第四章会具体讲怎么处理。积分图是这一切能实时跑的关键。每次窗口滑动时如果直接用原始像素计算矩形区域像素和640x480 的画面每秒最多处理几帧。积分图的做法是预先对整幅灰度图求一遍累加表得到一个与原图等尺寸的二维数组之后任何矩形区域的像素和都只需查表四次再加三次减法单次复杂度降到 O(1)。OpenCV 的 detectMultiScale 在内部自动完成积分图计算对调用者完全透明。这也是为什么深度学习这么普及的今天Haar 级联在轻量场景下依然有用——它不需要 GPU纯 CPU 跑 640x480 画面可以到 20 到 30 帧模型文件只有一个 24KB 的 XML部署起来几乎零依赖。对比 YOLO 系列动辄几十 MB 的权重和推理框架Haar 在原型验证阶段的启动成本低得多。2.3 最小可运行示例一张图把上半身框出来原理说得再多不如先跑通。下面这段代码读入一张办公室照片转灰度后调用 detectMultiScale把检测到的上半身用绿色矩形框出并保存import cv2 cascade cv2.CascadeClassifier(haarcascade_upperbody.xml) img cv2.imread(office.jpg) if img is None: raise FileNotFoundError(图片读取失败确认路径和文件名) gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) rects cascade.detectMultiScale( gray, scaleFactor1.1, minNeighbors5, minSize(40, 40), ) for (x, y, w, h) in rects: cv2.rectangle(img, (x, y), (x w, y h), (0, 255, 0), 2) cv2.imwrite(output.jpg, img) print(f检测到 {len(rects)} 个目标)逻辑说明detectMultiScale 以滑动窗口方式在灰度图上逐尺寸扫描。scaleFactor1.1 表示每次将检测窗口缩小 10%窗口从小到大遍历整张图用来匹配画面里不同大小的目标minNeighbors5 表示一个候选区域至少要有 5 个相邻检测框同时命中才保留值越大误检越少minSize(40, 40) 表示小于 40x40 像素的候选窗口直接跳过避免在远处小人头上浪费计算。首次跑通后建议打印 rects 内容你会看到每个候选框是一个 (x, y, w, h) 元组x、y 是框左上角坐标w、h 是宽和高直接对应原图坐标。如果输出为空先不要急着调参检查测试图里人物的高度——上半身小于 80 像素时这份模型基本无能为力。2.4 为什么选 upperbody 而不是 fullbody 或 faceOpenCV 官方仓库同时提供 haarcascade_fullbody.xml、haarcascade_frontalface_default.xml、haarcascade_upperbody.xml 等多个预训练模型选错文件是常见翻车原因。fullbody 针对站立全身照训练对坐姿、下半身被遮挡、半身入画这三种情况几乎无效frontalface 只框脸背面、戴帽子、低头场景全部失效而且人脸检测对距离特别敏感人稍远一点就丢。upperbody 的定位正好介于两者之间它只要求头加躯干可见不要求下半身入画。所以会议室摄像头、柜台服务区、教室录播这类人坐在画面里的场景upperbody 比 fullbody 靠谱得多而走道里的人员流动检测upperbody 会因为只能看到躯干以上而漏掉被遮挡的人需要换成 fullbody。选模型的判断标准是你的摄像头到底能看到人的哪些部分就让模型去检测哪些部分而不是反过来迁就模型。还有一个容易被忽略的视角问题这份 XML 是为水平视角的监控摄像头训练的。如果你把摄像头装在走廊顶部俯拍拍到的是头顶和肩膀的俯视图Haar 特征的明暗对比关系完全变了检测效果会断崖式下降。俯视场景不要用这份模型直接考虑 YOLO 或者按俯视样本自训练省得浪费时间调参。3. detectMultiScale 参数调优把误检压下去才能交给业务3.1 scaleFactor 的选择精度与耗时的直接博弈detectMultiScale 的第一个容易踩的坑是 scaleFactor。它的含义是每次图像缩放的比率取值范围通常在 1.01 到 1.5 之间。数值越小扫描的尺度越细密目标尺寸变化能被更精确地匹配但窗口遍历次数成倍上涨数值越大扫描越稀疏速度快但容易漏检。常见的刚上手操作是一上来就设 1.05结果一次检测从几十毫秒变成几百毫秒实时性直接毁掉。我一般按这个经验起手视频分辨率在 1280x720 以上、目标占画面比例较大时用 1.1摄像头画面较小或者对帧率有硬性要求时从 1.15 起步。然后固定测试图做对比如果 1.1 和 1.15 的检测框数量完全一样说明目标尺度相对集中直接用 1.15 能省 20% 到 30% 的耗时如果 1.15 开始丢框退回 1.1。这个对比实验必须做因为不同摄像头安装高度、角度、焦距会让目标在画面里的尺度分布差很多。需要提醒的是scaleFactor 和 minNeighbors 是联动的。把 scaleFactor 调大后窗口总数变少每个真实目标命中的候选框数量也会下降这时候如果 minNeighbors 还是 5 或 6可能导致原本能检出的目标被当误检丢掉。所以每次改 scaleFactor都要回头重新检查 minNeighbors 是否合适别只动一个参数就指望结果变好。3.2 minNeighbors、minSize、maxSize三个旋钮怎么配合minNeighbors 是控制误检最有效的旋钮。它的含义是某个位置附近至少要有几个互相重叠的候选框才确认这里有目标。值越大孤立的误检框被过滤得越干净但真实目标如果恰好处在响应较弱的姿态也可能被一起丢掉。典型取值是 3 到 8干净的室内场景用 5 到 6室外杂物多的场景用 7 到 8。minSize 直接表达我对目标最小尺寸的预期。比如办公场景人离摄像头约 3 米上半身在画面里约占 120 像素宽、160 像素高那么 minSize 设 (60, 80) 就能跳过大量小窗口既提速又减少误检。不要设 (0, 0)——那会让检测器把图像纹理、窗帘、阴影、桌面反光全部纳入候选误检框多到没法看。给一个保守的起步值 (40, 40)再根据画面实际比例微调。maxSize 平时可以不用设当你发现画面里既有真人又有广告牌上的人形图案而且人形图案被反复框出来时设一个 maxSize 把超大候选排除比单纯提高 minNeighbors 更精准。这三个参数的配合有个基本顺序先定 minSize 让检测器知道目标多大再调 scaleFactor 决定扫描密度最后用 minNeighbors 收拾误检。如果一上来就堆 minNeighbors会在误检和漏检之间反复横跳浪费时间。还有参数 flags在 OpenCV 4.x 里基本废弃传 0 即可不用去研究旧文档里的 CASCADE_SCALE_IMAGE 这些常量。3.3 可直接抄的参数评估脚本用数据说话与其对着文档猜不如写个脚本批量对比参数。下面这段代码我经常用来给业务方演示参数改了到底差多少也用来在换摄像头后重新标定参数import time import cv2 cascade cv2.CascadeClassifier(haarcascade_upperbody.xml) def evaluate(image_path, params): img cv2.imread(image_path) if img is None: raise FileNotFoundError(image_path) gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) t0 time.perf_counter() rects cascade.detectMultiScale(gray, **params) elapsed (time.perf_counter() - t0) * 1000 return len(rects), elapsed configs [ {scaleFactor: 1.1, minNeighbors: 3, minSize: (40, 40)}, {scaleFactor: 1.1, minNeighbors: 5, minSize: (40, 40)}, {scaleFactor: 1.15, minNeighbors: 5, minSize: (60, 60)}, {scaleFactor: 1.15, minNeighbors: 7, maxSize: (400, 400)}, ] for cfg in configs: n, ms evaluate(office.jpg, cfg) print(cfg, -, n, detections,, f{ms:.1f} ms)脚本对同一张图跑四组典型配置输出检测数和单帧耗时。先用 1.1/3/40 拿基准如果 1.1/3 和 1.1/5 框数一样说明场景干净minNeighbors 用 5 更稳妥如果 1.1/3 多出的框全是误检直接跳到 6 或 7。这里有个血泪经验参数评估必须用 3 到 5 张不同时段、不同光照的真实帧不能只测一张图。我见过有人在下午的演示图上调得完美部署后到晚间灯光一变误检框刷了一屏。参数这个事有时候挺玄学但用多帧数据做基准至少能把玄学成分压到最低。4. 避坑与常见问题训练数据缺陷、光照敏感与性能翻车现场4.1 现象侧身和背对镜头完全检测不到症状是在实际视频里正面走过的人能框住一旦侧身、转身或低头看手机框立刻消失人员计数明显偏低。调参数没有改善。原因是这份模型的正样本以正面和近正面为主Haar 特征学到的头肩明暗对比在侧面视角下不成立。这是模型训练数据决定的上限不是参数能救的。侧面时头肩轮廓合并成一个剪影Haar 特征里的矩形对比关系被打破响应自然归零。解决先确认业务是否接受只检测正面。如果接受就在交付说明里写明如果不接受不要继续在 Haar 上耗时间直接换成 HOGSVM 或者 YOLO。有一种折中方案是同时加载多份不同角度的级联模型并行检测但 OpenCV 官方只提供正面版本自训练角度模型的样本采集和训练成本不低对大多数项目不划算。4.2 现象室内误检一堆窗口乱跳症状是办公区、机房、仓库这类场景里空调、显示器、绿植、玻璃反光后面经常被框出来画面里明明没人还在跳框。原因有两类。一类是 minNeighbors 设得太低孤立的候选框被当成目标另一类是场景里存在和头肩明暗对比相似的纹理比如显示器边框、柜子阴影、桌面上的文件夹排列都会触发 Haar 特征响应。Haar 特征本质上只认明暗关系不认物体语义这是它的固有弱点。解决先把 minNeighbors 提到 6 或 7观察误检是否下降。再把 minSize 适当调大比如从 40 提到 80排除远处小物体。如果还误检对画面设检测区域ROI只检测业务关心的区域。做法是准备一张与画面同尺寸的掩码图检测前把 ROI 外的像素置黑这样检测器根本不会扫描那些区域。ROI 是对付边缘杂物误检最有效的单一手段绝大部分误检都发生在画面边缘的杂物区。4.3 现象4K 画面帧率只有个位数CPU 打满症状是 1080P 跑 15 帧没问题切到 4K 摄像头后帧率掉到 3 到 5 帧CPU 占用 90% 以上业务方催着要优化。原因是 detectMultiScale 的扫描成本随图像像素数近似线性上涨。4K 的像素总量是 1080P 的四倍加上 scaleFactor1.1 的细密缩放计算量完全不可接受。Haar 级联没有内置的 GPU 加速路径CPU 算力就是硬约束。解决常见做法是缩小检测尺寸然后按比例把框坐标映射回原图import cv2 cascade cv2.CascadeClassifier(haarcascade_upperbody.xml) frame cv2.imread(4k_frame.jpg) h, w frame.shape[:2] target_w 640 scale target_w / w small cv2.resize(frame, (target_w, int(h * scale))) gray cv2.cvtColor(small, cv2.COLOR_BGR2GRAY) rects cascade.detectMultiScale( gray, scaleFactor1.1, minNeighbors5, minSize(30, 30) ) for (x, y, rw, rh) in rects: x1 int(x / scale) y1 int(y / scale) x2 int((x rw) / scale) y2 int((y rh) / scale) cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2) cv2.imwrite(4k_output.jpg, frame)逻辑说明先把 4K 帧等比压缩到宽度 640在缩小的图上检测再把检测框坐标按缩放比例映射回原图。缩放因子 scale 由目标宽度除以原图宽度得到映射时用除法还原坐标。代价是远处小目标可能漏掉这是缩小检测的固有损失。如果业务要求必须看清远处人Haar 在 4K 实时这条路上到头了直接考虑推理卡或换深度学习模型。另外可以把检测间隔拉长比如每 3 帧只检测 1 帧中间帧沿用上一帧结果视觉上几乎无感CPU 占用能降一半。4.4 现象加载或检测时报错empty() 返回 True症状有两种CascadeClassifier 加载后 empty() 为 True或者 detectMultiScale 抛出assertion failed程序直接崩。原因分三类。一是 XML 文件本身损坏特别是在 Windows 上下载后传到 Linux 服务器可能被编码或换行符问题破坏。二是 OpenCV 版本差异个别版本对旧格式 XML 的兼容性有变化。三是路径问题路径里有中文、空格或者 Linux 下文件名大小写不匹配。解决先检查文件字节数是否与解压时一致用file haarcascade_upperbody.xml确认它确实是 XML 文本而不是被网页下载成的 HTML。再确认路径里没有中文和空格文件名大小写完全正确。如果文件确认无误依然 empty固定使用 OpenCV 4.5 以上版本并在代码里打印cv2.__version__记录环境方便对比。还有一个容易忽略的点zip 包里可能有嵌套目录解压后 XML 不一定就在当前目录用find . -name *.xml找一下真实位置再写路径。4.5 现象同一个人被重复计数人数统计虚高症状是画面里一个人站着不动检测框在身边的人影、墙上的挂衣之间跳来跳去计数逻辑把同一人算了三到五次。原因是没有跟踪机制每帧独立检测帧与帧之间没有关联。Haar 检测本身不做跨帧匹配任何检测器直接接计数都会有这个问题只是 Haar 的框抖动更明显因为 minNeighbors 稍微调低一点同一个人身上就会出现多个互相重叠的框。解决最简单有效的办法是设置相邻帧去重以检测框中心点为基准如果当前帧某个框中心与上一帧某个框中心距离小于目标宽度的三分之一就认为是同一个目标不再计数。再进一步可以引入简单的 IoU 匹配或卡尔曼滤波跟踪但大多数场景用中心点去重就够了。另一个常见做法是只统计从无到有的目标对每帧的检测框集合做一次连续多帧确认连续三帧都检测到才计数能过滤掉大量瞬时误检。5. 把这套检测接到实际项目从摄像头到图片批处理的一个落地套路最后给一个我常用的落地套路。第一步是把输入源抽象掉统一处理图片目录、单视频和摄像头三种输入第二步是抽一个纯检测函数输入灰度图输出框列表不碰任何 I/O第三步是把参数集中在一个配置里按场景切换。import cv2 class UpperBodyDetector: def __init__(self, model_path, params): self.cascade cv2.CascadeClassifier(model_path) self.params params def detect(self, bgr_frame): gray cv2.cvtColor(bgr_frame, cv2.COLOR_BGR2GRAY) return self.cascade.detectMultiScale(gray, **self.params) config { scaleFactor: 1.15, minNeighbors: 6, minSize: (60, 60), } detector UpperBodyDetector(haarcascade_upperbody.xml, config)这类封装的好处是当你要从 Haar 换成 HOG 或深度学习模型时业务代码完全不用动只改 detector 内部实现。我自己的教训是第一版把 scaleFactor、minNeighbors 直接写死在业务循环里每次换场景都要翻代码改数值后来把所有参数挪到配置对象里用场景名区分参数组效率高很多。如果你要做历史图片批处理建议在循环入口加一个 resize 限制把长边压到 960 再检测。我跑过一个上万张的目录不 resize 直接全帧检测CPU 打满六个小时加上 resize 后检测精度几乎没有变化耗时降到原来的四分之一。批处理脚本还要记得加断点续跑用输出目录里是否已有同名结果文件判断当前图片是否处理过否则中途网络故障或断电会让前面几个小时白跑。Haar 级联在今天算不上最前沿但这份 24KB 的 XML 用它的确定性、轻量和可解释性在边缘盒子、快速原型、特定场景计数里依然值得投入。希望这份实操记录能帮你把 haarcascade_upperbody.xml.zip 用明白少踩几个我当年踩过的坑。本文还有配套的精品资源点击获取

相关新闻

Unity Accelerator与Cache Server部署实战:资源缓存加速团队协作

Unity Accelerator与Cache Server部署实战:资源缓存加速团队协作

Unity Accelerator 与 Cache Server 这套缓存方案,我印象里第一次在团队协作里救急,是在一次几十个 G 的工程重做资源库之后。美术那边一提交资源,程序这边一拉分支,整个办公室的 Unity 编辑器就开始同时转圈,Asset 导…

2026/10/5 8:54:44 阅读更多 →
OpenCode本地AI编程工作流:Qwen2.5-Coder+LM Studio实战指南

OpenCode本地AI编程工作流:Qwen2.5-Coder+LM Studio实战指南

1. 项目概述:这不是另一个“Claude Code平替”,而是一套可落地、可验证、可长期维护的本地AI编程工作流你是不是也经历过这样的时刻:在VS Code里敲下几行代码,想让AI帮你看下逻辑漏洞,结果弹出“Your organization has…

2026/10/5 8:54:44 阅读更多 →
Mixer-First接收机:宽带阵列抗阻塞架构的核心原理与工程实践

Mixer-First接收机:宽带阵列抗阻塞架构的核心原理与工程实践

做阵列接收机的朋友应该都有体会:宽带和强干扰这两个词放在一起,射频前端的设计难度是指数级上升的。传统上我们习惯让低噪声放大器(LNA)打头阵,先给后级提供足够增益,再交给混频器下变频。这个架构本身没什…

2026/10/5 8:54:44 阅读更多 →

最新新闻

软考 系统架构设计师历年真题集萃(6)

软考 系统架构设计师历年真题集萃(6)

接前一篇文章:软考 系统架构设计师系列知识点之杂项集萃(5) 第10题 ( )是关于需求管理正确的说法。 A. 为达到过程能力成熟度模型第二级,组织机构必须具有3个关键过程域 B. 需求的稳定性不属于需求属性 C. 需求变更的管理过程遵循变更分析和成本计算、问题分析和变更…

2026/10/5 10:07:44 阅读更多 →
【亲测免费】 探索游戏保存数据备份的利器:Ludusavi

【亲测免费】 探索游戏保存数据备份的利器:Ludusavi

探索游戏保存数据备份的利器:Ludusavi 【免费下载链接】ludusavi Backup tool for PC game saves 项目地址: https://gitcode.com/GitHub_Trending/lu/ludusavi Ludusavi 是一个用Rust语言编写的跨平台游戏存档备份工具,它能够帮助你在多个游戏平台…

2026/10/5 10:07:44 阅读更多 →
docker-selenium 浏览器镜像标签体系实战:从 tag_and_push_browser_images.sh 读懂 Chrome 112 镜像的完整发布记录

docker-selenium 浏览器镜像标签体系实战:从 tag_and_push_browser_images.sh 读懂 Chrome 112 镜像的完整发布记录

测试后端云原生容器编排可观测性 【免费下载链接】docker-selenium Provides a simple way to run Selenium Grid with Chrome, Firefox, and Edge using Container Platform, making it easier to perform browser automation at scale 项目地址: https://gitcode.…

2026/10/5 10:07:44 阅读更多 →
软考 系统架构设计师历年真题集萃(7)

软考 系统架构设计师历年真题集萃(7)

接前一篇文章:软考 系统架构设计师系列知识点之杂项集萃(6) 上一回在讲习题的时候引出来软件能力成熟度,由于内容较多,因此并未讲完,本回把剩余知识讲完。 软件能力成熟度模型 软件能力成熟度模型(Capability Maturity Model,CMM)是一个概念模型。模型框架和表示是刚…

2026/10/5 10:07:44 阅读更多 →
CLRS 15.4 习题精讲:最长公共子序列(LCS)与最长递增子序列(LIS)的动态规划算法

CLRS 15.4 习题精讲:最长公共子序列(LCS)与最长递增子序列(LIS)的动态规划算法

文档教程示例工程 【免费下载链接】CLRS :notebook:Solutions to Introduction to Algorithms 项目地址: https://gitcode.com/gh_mirrors/cl/CLRS 点击查看 免费下载 本文围绕《算法导论》(Introduction to Algorithms)第 15.4 节"最长…

2026/10/5 10:07:44 阅读更多 →
双目相机选型与标定指南:从参数对比到工程避坑

双目相机选型与标定指南:从参数对比到工程避坑

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

2026/10/5 10:06:44 阅读更多 →

日新闻

马斯克杀回智能体战场,Grok 4.5万亿参数撑腰,Cursor接手数字白领项目:用TaoToken统一Key跑通多模型Agent工作流

马斯克杀回智能体战场,Grok 4.5万亿参数撑腰,Cursor接手数字白领项目:用TaoToken统一Key跑通多模型Agent工作流

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

2026/10/5 0:00:22 阅读更多 →
AI编程工具插件机制详解:plugin.json配置与加载失败排查指南

AI编程工具插件机制详解:plugin.json配置与加载失败排查指南

1. 从“plugins”这个词说起:它到底在解决什么问题如果你最近在折腾 AI 编程工具,尤其是 Cursor、Codex CLI、Claude Code 这类带 CLI 的编辑器或命令行助手,那你大概率绕不开一个词——plugins。这个词本身不新鲜,从浏览器到 IDE…

2026/10/5 0:00:23 阅读更多 →
第26课:OpenClaw|日志审计与问题诊断:把日志链路改到 TaoToken 的排查清单

第26课:OpenClaw|日志审计与问题诊断:把日志链路改到 TaoToken 的排查清单

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

2026/10/5 0:00:23 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

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

2026/10/5 5:06:42 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

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

2026/10/5 1:10:22 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

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

2026/10/5 3:06:17 阅读更多 →

月新闻

我发现了一个新思路:用 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/4 11:40:45 阅读更多 →
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/4 9:43:54 阅读更多 →
黑夜航拍船只数据集训练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/4 20:14:29 阅读更多 →