OpenCV霍夫变换圆检测原理与工程调优实战
1. 项目概述为什么圆检测不是“画个圈”那么简单OpenCV里的霍夫变换圆检测听起来像是调个函数、设几个参数就能出结果的“一键操作”。但我在带某高校图像处理实验课时发现超过七成的学生第一次跑通代码后要么根本检不出图中的圆要么把椭圆、弧线甚至噪声点都当成圆框出来。问题不在于OpenCV封装得不够好而在于霍夫变换本身是一套有明确物理意义和数学约束的几何推理机制——它不是在“找圆”而是在“投票验证圆心与半径的组合是否自洽”。这个“自洽”需要你真正理解图像梯度方向如何构成法线、累加器空间里每个像素点如何对可能的圆心位置投出一票、以及为什么半径不能随便设成固定值而是必须参与搜索。我做过一个对比实验同一张硬币照片用默认参数检测漏检2枚把minRadius从10调到8多检出3个伪圆而把param1边缘检测高阈值从100降到65后连硬币边缘的反光斑点都被识别为独立小圆。这说明圆检测不是参数调优游戏而是对图像结构、噪声特性、目标尺度三者关系的系统性建模。它适合两类人一类是正在做工业质检比如检测PCB焊点、轴承滚珠、自动驾驶中交通标志识别、或医学影像中细胞核定位的工程师需要稳定复现另一类是刚学完Canny边缘检测、想深入理解“从边缘到几何形状”这一关键跃迁的初学者。如果你只是想快速标出图片里的圆圈用轮廓近似最小外接圆更直接但如果你想让算法真正“看懂”圆的存在逻辑那霍夫变换就是绕不开的一课。2. 霍夫变换圆检测的核心原理与设计逻辑2.1 从直线到圆霍夫空间的本质迁移很多人以为霍夫变换圆检测是直线检测的简单扩展其实二者在数学结构上存在根本差异。直线检测的霍夫空间是二维的ρ-θ因为一条直线由极径ρ和极角θ唯一确定而圆由圆心(x₀, y₀)和半径r三个参数决定其霍夫空间本应是三维的。但OpenCV实际采用的是“两阶段搜索”策略这是工程落地的关键妥协先固定半径r在二维圆心空间(x₀, y₀)中进行投票再遍历预设的半径范围对每个r重复该过程。这种设计牺牲了理论完备性却换来可接受的计算开销。举个例子一张640×480的图像若半径搜索范围是[10, 50]步长为1则需执行41次二维累加器更新每次更新涉及所有边缘点。而若真用三维空间累加器大小将是640×480×41≈12.6MB且每次边缘点投票需在三维空间中沿球面轨迹累加计算量呈指数级增长。OpenCV的实现本质上是将“三维搜索”拆解为“41次二维搜索”用时间换空间这是典型工业级算法的务实选择。2.2 投票机制边缘点如何“指认”圆心霍夫圆检测的投票逻辑核心在于图像梯度方向。Canny边缘检测后每个边缘点P(x, y)不仅有坐标还有梯度方向θ即法线方向。对于一个假想的圆其圆心必然位于过P点、方向为θ的直线上。因此P点能“支持”的所有可能圆心就落在这条法线直线上。算法正是沿着这条线对预设半径r对应的圆心位置(x₀ x - r·cosθ, y₀ y - r·sinθ)进行累加。注意这里的方向处理cosθ和sinθ决定了法线指向圆心的分量而负号表示圆心在边缘点的“内侧”。我曾用Matplotlib可视化过单个边缘点的投票轨迹——当r20时它在圆心空间中投出的不是一个点而是一条离散化采样的线段当r25时这条线段整体平移形成另一条平行线。所有边缘点的投票线段在圆心空间中交汇处累加值最高即为最可能的圆心。这解释了为什么图像必须有清晰、连续的边缘断续的边缘点无法形成足够强的交汇峰导致累加器峰值被噪声淹没。2.3 累加器阈值与局部极大值抑制为什么“最高票”不等于“正确圆”累加器空间中的峰值高度直接反映支持该圆心-半径组合的边缘点数量。但峰值高度受多重因素影响图像对比度、边缘检测质量、噪声水平、以及圆本身的完整度。OpenCV的minDist参数圆心间最小距离和minRadius/maxRadius共同构成空间滤波器。minDist的作用常被误解为“避免重复检测”实则是强制峰值之间保持物理距离防止一个大圆的多个局部弧段在累加器中形成多个邻近峰值。我测试过一张含3个同心圆的图纸当minDist设为5时算法返回9个圆每个圆被拆成多个小段设为30后只返回3个但其中1个半径偏差达15%。这是因为minDist过大时算法会合并不同半径的候选圆心导致半径估计失真。真正的稳健做法是先用较小minDist获取所有候选再通过RANSAC等后处理剔除离群值。而param2累加器阈值则控制“多少票才算数”。设为100时可能漏检弱边缘圆设为30时噪声点开始大量冒泡。它的合理取值必须结合图像中最强圆的预期边缘点数来估算。例如一个直径40像素的完整圆周长约125像素若Canny能检出其中70%的边缘点则累加器理论峰值约87此时param2设为60较稳妥。3. 实操全流程从原始图像到可靠圆坐标输出3.1 图像预处理为什么“去噪”比“增强”更重要在正式调用cv2.HoughCircles前预处理步骤往往比参数调整更能决定成败。我总结出一套“三步净化法”高斯模糊→自适应直方图均衡→Canny边缘检测。关键细节在于高斯核大小必须与目标圆尺寸匹配。若检测直径20~50像素的圆σ设为1.5~2.5若目标圆直径超100像素σ需增至3.5以上。原因在于过小的σ无法抑制高频噪声导致Canny产生大量碎边缘过大的σ则会模糊圆的真实边缘使梯度方向失真。自适应直方图均衡CLAHE的clipLimit参数建议设为2.0tileGridSize为(8,8)。这能提升暗部圆的对比度又不会放大亮部噪声。我曾处理一张背光拍摄的齿轮图像未用CLAHE时齿根阴影区的圆孔完全不可见启用后Canny成功检出全部12个孔。Canny的双阈值设置尤为关键param1高阈值应设为图像梯度幅值的60%~70%可通过cv2.magnitude(dx, dy)计算后取百分位数获得param2低阈值固定为param1的0.4倍。这样能保证强边缘必被保留弱边缘按比例纳入形成完整的边缘链。3.2cv2.HoughCircles核心参数详解与实测选型OpenCV的圆检测函数签名是cv2.HoughCircles(image, method, dp, minDist, param1, param2, minRadius, maxRadius)。下面逐个解析其物理意义与实测经验method目前仅支持cv2.HOUGH_GRADIENT即基于梯度的霍夫变换无需纠结。dp累加器分辨率与图像分辨率的反比。dp1表示累加器与原图同尺寸dp2则累加器宽高减半。实测心得对1080p图像dp1时内存占用超1GB且速度慢dp1.5是黄金平衡点精度损失可忽略内存降至300MB内。dp值越大圆心定位越粗糙但抗噪性略升。minDist如前所述非简单去重。我的经验公式minDist max(20, int(0.3 * min(img.shape)))。即取20像素与图像短边30%的较大值。对640×480图minDist144对1920×1080图minDist324。此值确保即使图像中有密集小圆也能被区分。param1Canny高阈值。不要凭感觉设用以下代码自动计算grad_x cv2.Sobel(gray, cv2.CV_64F, 1, 0, ksize3) grad_y cv2.Sobel(gray, cv2.CV_64F, 0, 1, ksize3) mag cv2.magnitude(grad_x, grad_y) param1 int(np.percentile(mag[mag0], 70)) # 取梯度幅值70%分位数param2累加器阈值。动态设定法先用param210运行一次获取所有候选圆的累加器值取其均值的1.5倍作为最终param2。这能自适应图像质量。minRadius/maxRadius必须基于先验知识设定。若目标圆直径在30~80像素则minRadius12maxRadius42留2像素余量。致命错误设minRadius0或maxRadius0会导致算法崩溃或返回空结果。3.3 后处理与结果验证如何判断检测结果可信cv2.HoughCircles返回的圆坐标是(x, y, r)浮点数组但这只是算法输出不是最终答案。我必做的三步验证几何合理性过滤剔除圆心超出图像边界的圆x-r0 or xrwidth or y-r0 or yrheight以及半径小于3像素的“噪声圆”。后者在显微图像中尤其常见因细胞核边缘噪声易被误判。边缘一致性验证对每个候选圆在原图上提取其圆周上的120个等距点计算这些点的Canny边缘响应均值。若均值低于全局边缘响应均值的30%则判定为伪圆。此步骤用cv2.getRectSubPix和插值实现耗时仅毫秒级。空间分布分析若检测到多个圆计算其圆心间距离矩阵。若存在两圆心距离小于1.2*r_avgr_avg为两圆半径均值则保留累加器值更高的那个另一个标记为“疑似重叠”。这在检测电路板焊点时能有效区分相邻焊盘与单个焊盘的误检。我曾用此流程处理某公司提供的1200张轴承滚珠图像原始检测准确率82%加入上述后处理后升至96.7%漏检率从18%降至3.3%且无一例将划痕误判为圆。4. 常见问题与排查技巧实录4.1 典型问题速查表问题现象根本原因排查步骤解决方案完全无输出Canny未检出有效边缘1. 显示Canny二值图2. 检查param1是否过高3. 查看图像是否过曝/欠曝降低param1用CLAHE增强检查曝光设置检出大量小伪圆param2过低或minRadius过小1. 打印返回圆的半径分布2. 观察最小半径是否5像素3. 检查累加器峰值是否普遍偏低提高param2增大minRadius检查dp是否过大大圆被拆成多个小圆minDist过小或maxRadius过小1. 测量图像中最大圆直径2. 检查maxRadius是否实测值/23. 查看累加器峰值是否分散增大maxRadius提高minDist用cv2.HoughCircles的HOUGH_GRADIENT_ALTOpenCV 4.8圆心偏移严重图像畸变未校正或梯度方向不准1. 检查镜头是否广角2. 用棋盘格标定畸变参数3. 对比校正前后检测结果添加相机标定步骤用cv2.undistort预处理同一圆多次出现minDist设置不当或图像有重复纹理1. 计算所有圆心间距离2. 统计距离20像素的圆对数3. 检查图像是否有周期性图案增大minDist添加NMS非极大值抑制后处理4.2 我踩过的三个深坑与独家技巧坑一彩色图直接输入导致结果飘忽某次调试中我将BGR格式图像直接传入cv2.HoughCircles结果在不同电脑上输出不一致。根源在于该函数内部会将输入图像转为灰度但BGR转灰度的系数0.114, 0.587, 0.299在不同OpenCV版本中略有差异。解决方案永远手动转灰度——gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)并确保img是uint8类型。我写了个检查函数def validate_input(img): assert len(img.shape) 2, Input must be grayscale assert img.dtype np.uint8, Input must be uint8 return True坑二param2设为整数导致精度丢失文档说param2是int但实测发现当param230.0float时算法内部会做向下取整而param230int则直接使用。这导致在边界情况下float输入比int输入更严格。技巧始终以int传入但计算时用float再转int如param2 int(0.6 * base_value)。坑三多尺度检测的内存爆炸当minRadius5,maxRadius100, 步长1时需执行96次累加器更新。对4K图像单次更新内存超2GB。我的降维技巧改用对数尺度搜索——radii np.unique(np.logspace(np.log10(5), np.log10(100), 20, dtypeint))仅20个半径值覆盖全范围内存降至300MB检测精度损失2%。代码实现log_radii np.logspace(np.log10(minR), np.log10(maxR), num20) circles [] for r in log_radii: circles_r cv2.HoughCircles(..., minRadiusint(r), maxRadiusint(r)2) if circles_r is not None: circles.append(circles_r[0]) circles np.vstack(circles) if circles else np.array([])4.3 性能优化实战从3秒到0.2秒在嵌入式设备部署时圆检测常成性能瓶颈。我的优化路径如下ROI裁剪若已知圆只出现在图像下半部分先img_roi img[height//2:, :]减少50%像素处理量。尺寸缩放用cv2.resize(img, (0,0), fx0.5, fy0.5)将图像缩小一半。霍夫变换对尺度鲁棒缩放后dp可设为1minDist减半整体速度提升3倍精度下降可接受实测圆心偏移3像素。并行半径搜索将半径范围分块用concurrent.futures.ThreadPoolExecutor并行调用cv2.HoughCircles。注意OpenCV的全局锁需在每个线程内重新加载库。累加器复用对同一图像多次检测不同半径复用同一累加器内存避免反复分配。用cv2.HoughCircles的circles参数传入预分配数组。最终在树莓派4B上处理640×480图像的时间从3.2秒降至0.18秒满足实时性要求。5. 进阶应用与领域适配要点5.1 工业质检场景如何应对反光与遮挡在检测金属零件上的定位孔时强反光会导致Canny边缘断裂遮挡则使圆弧不完整。我的应对策略是“双通道投票”除标准梯度方向外额外计算图像亮度梯度cv2.Sobel(gray, cv2.CV_64F, 1, 0, ksize5)将亮度梯度方向也作为投票依据。因为反光区虽边缘弱但亮度变化剧烈。具体实现对每个边缘点生成两个圆心候选——一个用Canny梯度方向一个用亮度梯度方向分别投票。实测在某汽车零部件图像中标准方法检出率68%双通道提升至91%。遮挡问题则靠“弧长加权”计算每个候选圆上实际存在的边缘点占比仅当占比40%时才接受。这避免了将半圆误判为完整圆。5.2 医学影像场景细胞核检测的尺度自适应显微图像中细胞核大小差异大且常有粘连。我摒弃固定半径搜索改用“尺度空间金字塔”对原图生成3层高斯金字塔每层缩小0.8倍在每层用minRadius8,maxRadius15检测再将结果映射回原图坐标。这样小核在高层检测大核在底层检测避免了单一尺度下的漏检。粘连问题用分水岭预处理先对灰度图做距离变换再找局部极大值作为种子点引导分水岭分割最后对每个分割区域单独做霍夫圆检测。这套流程在某病理切片数据集上F1-score达0.89优于单纯U-Net分割。5.3 实时视频流处理帧间一致性保障对摄像头视频流单帧检测易抖动。我的方案是“卡尔曼滤波历史投票”为每个检测到的圆维护一个卡尔曼滤波器预测下一帧位置同时建立一个历史累加器记录过去5帧中该圆心位置的出现频次。新帧检测结果需同时满足1与卡尔曼预测位置距离20像素2历史累加器值3。这使圆轨迹平滑抖动消除90%以上。代码核心# kalman为预定义的cv2.KalmanFilter对象 pred kalman.predict() if np.linalg.norm(new_circle[:2] - pred[:2]) 20: kalman.correct(new_circle[:2]) history_counter 1 else: history_counter max(0, history_counter - 1)6. 替代方案对比与技术选型建议6.1 霍夫变换 vs 轮廓拟合何时该放弃霍夫当图像中圆非常完整、边缘锐利、且背景简单时轮廓拟合cv2.findContourscv2.minEnclosingCircle是更优选择。它计算量小、速度快、精度高。我做过对比在检测白底黑圆的标定板时轮廓法平均耗时0.8ms霍夫法需42ms且轮廓法圆心误差0.3像素霍夫法为1.2像素。决策树若图像满足① 圆边缘连续无断裂② 背景与圆对比度高③ 无显著噪声④ 圆不重叠——选轮廓法。若图像存在① 边缘部分缺失如被遮挡② 弱对比度如X光片中的肺结节③ 多尺度圆共存④ 需要亚像素精度——必须用霍夫变换。6.2 深度学习方案的现实考量YOLOv8或RT-DETR等模型可端到端检测圆但需大量标注数据。我曾训练一个YOLOv8n模型检测硬币用了2000张标注图mAP0.5达0.93但推理速度在RTX3060上仅28FPS且模型体积15MB。而优化后的霍夫变换在同一GPU上达120FPS代码仅200行无需训练。我的建议对定制化、小批量、实时性要求高的工业场景霍夫变换仍是首选对通用性、多目标、复杂背景场景深度学习更合适。二者并非替代而是互补——可用霍夫变换做粗检再用轻量CNN对候选区域做精检。6.3 OpenCV 4.8 新特性HOUGH_GRADIENT_ALT的实战价值OpenCV 4.8引入HOUGH_GRADIENT_ALT方法其核心改进是用更鲁棒的梯度方向估计基于二阶导数替代一阶Sobel并在累加器中引入半径自适应权重。我在检测低对比度的红外图像时测试标准方法检出率54%HOUGH_GRADIENT_ALT达79%且对param1的敏感性降低40%。启用方式methodcv2.HOUGH_GRADIENT_ALT其他参数含义相同但param2需提高20%~30%。这是目前最值得升级的特性。我在实际项目中发现真正决定霍夫圆检测成败的从来不是某个神秘参数而是你对图像内容的理解深度。当你能预判一张图里有多少个圆、大概在什么位置、边缘会呈现什么形态、噪声会以什么方式干扰时参数调整就不再是试错而是精准的工程校准。这需要你亲手处理上百张不同来源的图像记录每一次失败的原因把报错信息、中间结果图、参数变化曲线都存下来。我自己的参数调优笔记已经积累了37页里面没有一行代码全是手绘的累加器热力图和失败案例分析。技术可以复制但这种对图像的直觉只能靠时间打磨。

相关新闻

从VGG16看卷积网络深度设计:小卷积核堆叠与迁移学习价值

从VGG16看卷积网络深度设计:小卷积核堆叠与迁移学习价值

前两天有个朋友发来一段代码,说他在某个小数据集上用VGG16做迁移学习,效果比一些看起来“更新”的网络还好,就是跑得慢。我顺手把2014年那篇《Very Deep Convolutional Networks for Large-Scale Image Recognition》翻出来又读了一遍。这篇论…

2026/10/16 17:29:43 阅读更多 →
会务小程序行政自己能搭吗?卡点就三步,附一张能当场验的清单

会务小程序行政自己能搭吗?卡点就三步,附一张能当场验的清单

单位办会,最常听到的一句话是"要做会务小程序啊?这个得找技术部门"。这句话现在不太站得住了。会务小程序这件事,早就过了要技术介入的阶段。真正卡住行政的不是能力,是三个很具体的坎:不会设计、不会配置、…

2026/10/16 17:28:42 阅读更多 →
StandardScaler保存的正确姿势:跨版本兼容与安全序列化

StandardScaler保存的正确姿势:跨版本兼容与安全序列化

1. 为什么StandardScaler的“保存”不是调用save()那么简单刚接触机器学习模型持久化的开发者,常会下意识地在StandardScaler对象上调用.save()或.dump()——结果要么报错AttributeError,要么保存下来的东西根本没法用。这不是你记错了API,而…

2026/10/16 17:28:42 阅读更多 →

最新新闻

基于Python的B站热门视频数据分析与可视化系统设计

基于Python的B站热门视频数据分析与可视化系统设计

先别急着到处找现成的毕设代码。如果你今年选题方向是“Python数据分析”类,同时又希望项目看起来有技术含量、能讲清楚、不容易被问倒,那么针对某个具体平台的视频数据分析系统,是一个很稳的选择。而“B站热门视频”这个主题,恰好…

2026/10/16 18:03:42 阅读更多 →
元学习建模实战:从任务分布到工业落地的避坑指南

元学习建模实战:从任务分布到工业落地的避坑指南

1. 这不是“点鼠标出模型”,而是让模型学会“怎么学”“自动学习(AutoML)——元学习建模”这个标题,乍看像极了某些宣传页上“三步生成AI模型”的营销话术。但如果你真把它当成一个黑箱工具链来用,大概率会在项目中期陷…

2026/10/16 18:03:42 阅读更多 →
涨停选股法:从资金逻辑到五维过滤的实战策略

涨停选股法:从资金逻辑到五维过滤的实战策略

涨停板这个东西,做过A股短线的人都不陌生。说白了,它就是多空双方力量在单日内极端失衡的体现——买盘以压倒性的优势把价格推到交易所规则允许的上限。我不止一次跟身边的朋友说,涨停不是终点,它是市场用最粗暴的方式告诉你&…

2026/10/16 18:03:42 阅读更多 →
质点动力学入门:牛顿三定律与运动微分方程的工程应用

质点动力学入门:牛顿三定律与运动微分方程的工程应用

简介:这份哈工大版《理论力学》PPT课件由哈尔滨工业大学多位教学经验丰富的教师精心编排,围绕质点动力学展开,系统讲解动力学基本定律、质点运动微分方程及质点动力学的两类基本问题,适用于工科院校学生复习理论力学,也…

2026/10/16 18:03:42 阅读更多 →
图书推荐系统全链路实战:Hadoop+PySpark+Django+大屏可视化

图书推荐系统全链路实战:Hadoop+PySpark+Django+大屏可视化

最近帮一个学弟完善他的图书推荐系统毕设,发现这套 Python PySpark Hadoop Django 的组合在同类项目里出现频率非常高。平台选得挺稳,但真正做到位的不多,大部分人卡在“数据回写”和“可视化对接”这两步,导致推荐结果算出来了…

2026/10/16 18:03:42 阅读更多 →
AMD Qwen-2.5_1.5B_Instruct_rai_1.8.0_medusa_1.0_npu 完全解读:1.5B 小模型如何同时做到 NPU 量化部署与 Medusa 加速?

AMD Qwen-2.5_1.5B_Instruct_rai_1.8.0_medusa_1.0_npu 完全解读:1.5B 小模型如何同时做到 NPU 量化部署与 Medusa 加速?

【免费下载链接】Qwen-2.5_1.5B_Instruct_rai_1.8.0_medusa_1.0_npu 项目地址: https://ai.gitcode.com/hf_mirrors/amd/Qwen-2.5_1.5B_Instruct_rai_1.8.0_medusa_1.0_npu 点击查看 免费下载 本文带你完整解读 AMD 发布的 Qwen-2.5_1.5B_Instruct_rai_1.8.0_medus…

2026/10/16 18:02:40 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

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

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 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/15 0:14:36 阅读更多 →
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/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练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/16 14:23:36 阅读更多 →