Hough变换实现答题卡鲁棒几何校正的全流程解析
简介本资源是一套基于Matlab实现的答题卡自动识别系统面向计算机、电子信息工程及数学等专业的本科生适用于课程设计、期末大作业或毕业设计参考。系统以Hough变换为核心算法完成答题卡图像的倾斜校正、区域分割、选项定位与结果判读涵盖从预处理灰度转换、二值化、平滑滤波、几何校正霍夫直线检测、角度计算、图像旋转到最终结果输出的完整流程。压缩包共14个文件含13个核心Matlab函数如main.m主程序、Hough_Process.m、Region_Segmation.m、Write_Results.m等及1张示例答题卡图片1.JPG总大小5.19MB结构清晰、模块职责明确便于理解算法逻辑与调试修改。目前已有545人学习下载适合具备基础Matlab编程能力、希望深入掌握图像处理典型应用的学生可直接运行验证、分析各阶段中间结果并据此拓展OCR识别或批量处理功能。1. 答题卡识别为什么总在边缘检测后“失焦”Hough变换不是万能钥匙但它是让歪斜、褶皱、光照不均的答题卡重新对齐的最稳锚点你手头有一叠扫描件有的答题卡被学生折过角有的复印时偏了15度有的阴影盖住了部分填涂区还有的摄像头畸变让矩形框变成了梯形。OpenCV的findContours一跑轮廓毛刺多、断裂、嵌套严重YOLO直接把填涂块当噪声滤掉连最基础的四点透视校正都找不到四个稳定角点——这时候别急着换模型先回头看看Hough变换在干什么。它不关心像素明暗只认“共线性”不依赖完整轮廓靠投票机制从大量杂乱边缘点中捞出最可能存在的直线族。本项目用Matlab实现的整套流程核心不是“检测填涂”而是先用Hough精准定位答题卡四条边界线再用这四线交点解算单应性矩阵完成鲁棒几何校正。后续二值化、区域定位、填涂判读才真正变得可预测、可复现。适合正在做教务系统OCR模块、考试阅卷工具链或课程设计需要可解释性方案的开发者——它不追求SOTA精度但每一步都能画出图、验出数、改得动。源码结构清晰含预处理对比脚本、Hough参数调优表、校正前后坐标映射验证函数所有图像操作均避开深度学习黑匣子全程可调试、可断点、可替换为C部署。2. 从原始扫描图到可用直线Hough变换前的三道硬过滤工序Hough变换本身很“脆”输入边缘图里只要混入3%的噪声线段投票峰值就可能偏移2~3个角度单位最终导致校正后答题卡仍倾斜0.8度——这对填涂区域ROI切割是致命的。Matlab里hough()函数默认参数根本扛不住真实扫描件。必须在调用前做三层过滤降噪、定向增强、边缘精炼。这不是可选项是保底动作。2.1 非局部均值去噪NL-Means替代高斯模糊保留填涂边缘锐度高斯模糊会平滑掉铅笔填涂与纸张背景的微弱灰度过渡带导致Canny边缘检测漏检浅填涂。而NL-Means通过搜索图像中相似块进行加权平均在抑制散粒噪声的同时几乎不损伤边缘梯度。Matlab R2021b起内置denoiseNLM函数但需手动设参% 原始扫描图 I 是 uint8 类型灰度图 I_denoised denoiseNLM(I, DegreeOfSmoothing, 12, SearchWindowSize, 11, SimilarityWindowSize, 7); % DegreeOfSmoothing12 是血泪经验小于10去噪不足大于15边缘发虚 % SearchWindowSize11 意味着在11x11邻域内找相似块太大耗时太小找不到足够相似块 % SimilarityWindowSize7 控制相似性计算窗口与填涂块尺寸通常4~6px匹配提示denoiseNLM比imgaussfilt在答题卡场景下PSNR平均高2.3dB尤其对浅铅笔痕保留效果显著。实测某高校模拟试卷扫描件DPI300经此步处理后Canny输出的有效边缘点数量提升37%且无虚假短线。2.2 方向自适应直方图均衡化AHE解决局部阴影全局直方图均衡化会让阴影区过曝、亮区泛白。答题卡常有装订孔阴影或扫描仪进纸不平造成的渐变暗区。我们用方向自适应方法先用Sobel算子计算梯度方向场再沿主梯度方向做局部CLAHE限制对比度自适应直方图均衡化。Matlab无现成函数需手动实现方向分块% 计算梯度幅值和方向 [Gx, Gy] imgradientxy(I_denoised); Gmag sqrt(Gx.^2 Gy.^2); Gdir atan2(Gy, Gx); % 弧度制范围[-pi, pi] % 将方向量化为4个区间0°, 45°, 90°, 135°对应0, pi/4, pi/2, 3*pi/4 dir_bins floor((Gdir pi) / (pi/2)) 1; % 得到1~4的整数标签 dir_bins(dir_bins 4) 4; % 边界修正 % 对每个方向区块分别做CLAHE使用imadjust的局部版本 I_enhanced zeros(size(I_denoised)); for d 1:4 mask (dir_bins d); if nnz(mask) 1000 % 避免极小区域报错 % 提取该方向区域子图并做CLAHE patch I_denoised .* uint8(mask); patch_enh adapthisteq(patch, Distribution,rayleigh,Alpha,0.8); I_enhanced I_enhanced patch_enh .* uint8(mask); end end I_enhanced im2uint8(I_enhanced);逻辑说明adapthisteq默认对整图分块但此处我们按梯度方向分区使阴影区梯度弱和文字区梯度强获得不同增强强度。Alpha0.8抑制过度增强避免填涂块内部出现伪影。参数Distribution,rayleigh比默认rayleigh更适配纸张纹理的统计分布。2.3 Canny边缘检测的双阈值动态校准固定高低阈值在不同光照试卷上必然失效。我们根据图像局部对比度动态生成阈值先用stdfilt计算每个像素邻域标准差再用其加权确定Canny的low_thresh和high_thresh% 计算局部标准差15x15窗口 std_map stdfilt(I_enhanced, ones(15,15)/225); % 标准差中位数作为基准 std_med median(std_map(:)); % 动态设定Canny阈值高阈值2.5*std_med低阈值0.4*高阈值 high_thresh 2.5 * std_med; low_thresh 0.4 * high_thresh; % 执行Canny BW_edge edge(I_enhanced, Canny, [low_thresh, high_thresh]);参数说明stdfilt窗口选15x15因答题卡最小填涂块约8x8像素需覆盖其2倍范围以捕获局部对比度high_thresh2.5*std_med经217份真实试卷测试漏检率1.2%low_thresh0.4*high_thresh是经典比例过高则短线断裂过低则毛刺增多。此步输出BW_edge即为Hough变换的纯净输入——它不含扫描仪摩尔纹、无纸张纤维噪声、填涂边缘连续无缺口。3. Hough变换参数的物理意义与答题卡专用调优策略Matlab的hough()函数返回H累加器矩阵、T角度向量、R距离向量但直接houghpeaks(H,5)找5个峰值大概率拿到的是纸张内部横线、装订孔边缘等干扰线。必须理解每个参数背后的几何约束并针对答题卡四边形特性定制搜索空间。3.1 角度分辨率ThetaResolution不能只看默认值1° vs 0.5°的校正误差差异hough()默认ThetaResolution为1度意味着角度空间被切成180份。但答题卡实际倾斜角常在±3.2°、±12.7°这类非整数度。1度分辨率下真实12.7°的边会被投影到12°或13°桶中投票峰值偏移导致交点计算误差达4.2像素按A4尺寸3508×4961像素计。必须收紧% 精确到0.3度共1200个角度桶-90°到90° theta -90:0.3:90; [H,T,R] hough(BW_edge, Theta, theta, RhoResolution, 1); % RhoResolution1 是关键距离分辨率1像素保证交点坐标精度注意Theta向量长度直接影响内存和计算时间。-90:0.3:90生成1201个角度值H矩阵大小为length(R)×1201。实测在i7-11800H上处理3000×4000图像耗时2.1秒可接受。若需提速可先粗筛用1°分辨率快速定位大致角度范围如[10°,15°]再在此区间用0.3°细筛。3.2 Rho范围Rho必须显式指定避免累加器溢出导致的“假平行线”hough()默认Rho范围是[-sqrt(M^2N^2), sqrt(M^2N^2)]其中M,N为图像尺寸。对A4扫描图3508×4961该范围达±6080像素R向量长达12161个元素。但答题卡四边必然在图像中心区域其rho值集中在[-2000,2000]内。过大的Rho范围会导致累加器H矩阵稀疏有效投票被摊薄houghpeaks在零值区误检“伪峰”。因此必须裁剪% 计算合理Rho范围基于图像尺寸和答题卡预期位置 M size(BW_edge,1); N size(BW_edge,2); max_rho ceil(sqrt(M^2 N^2)/2); % 取半程覆盖中心80%区域 rho -max_rho:1:max_rho; [H,T,R] hough(BW_edge, Theta, theta, Rho, rho, RhoResolution, 1);3.3 投票阈值Threshold的物理含义不是“强度”是“共识度”houghpeaks(H, NumPeaks, Threshold, T_val)中的T_val不是像素强度阈值而是累加器单元中投票数占全局最大投票数的百分比。默认Threshold0.5意味着只取投票数≥全局峰值50%的线——这在答题卡场景下太激进四条边界线投票数可能仅占峰值的35%~45%因存在大量短边缘干扰。需降低% 统计H中非零元素分布取第70百分位数作为阈值基线 H_nonzero H(H0); threshold_base prctile(H_nonzero, 70); % 设置实际阈值为基线的0.6倍经验值 peak_threshold 0.6 * threshold_base; peaks houghpeaks(H, 10, Threshold, peak_threshold, NumPeaks, 10);逻辑说明先用prctile避开异常峰值如装订孔形成的强线再乘0.6确保取到足够多候选线。后续通过几何约束四边形闭合性筛选而非在Hough阶段激进剔除。4. 从Hough峰值到答题卡四顶点交点求解与几何一致性验证拿到peaks10×2矩阵每行是[T_idx, R_idx]后不能直接用houghlines——它返回的线段端点不可控且未考虑答题卡四边必相交成凸四边形这一强约束。我们必须手动解算所有线对交点再用凸包面积约束筛选真顶点。4.1 将Hough峰值转为直线参数避免atan2符号陷阱houghlines内部用rho x*cos(theta) y*sin(theta)但theta是弧度Matlab的T向量是度数必须转换% peaks 是 houghpeaks 输出的索引矩阵 theta_rad deg2rad(T(peaks(:,1))); % T是角度向量peaks(:,1)是T索引 rho_val R(peaks(:,2)); % R是距离向量peaks(:,2)是R索引 % 构造直线参数ax by c 0 形式便于求交 a cos(theta_rad); b sin(theta_rad); c -rho_val; % 存为Nx3矩阵 lines_para [a,b,c] lines_para [a, b, c];提示cos/sin结果已自动处理theta符号-90°到90°无需额外判断象限。这是比用houghlines更可控的方式。4.2 全连接求交 凸四边形筛选拒绝“三点共线”的伪解10条候选线两两组合共45对但答题卡只有4条边需筛选。策略是计算所有45个交点坐标对每个交点检查其是否在图像内x∈[1,N], y∈[1,M]对所有有效交点计算其凸包凸包顶点数必须为4且面积图像面积的15%排除小噪点形成的四边形。% 初始化交点列表 intersections []; for i 1:size(lines_para,1) for j i1:size(lines_para,1) % 解线性方程组a1*xb1*yc10; a2*xb2*yc20 A [lines_para(i,1), lines_para(i,2); ... lines_para(j,1), lines_para(j,2)]; b_vec [-lines_para(i,3); -lines_para(j,3)]; if abs(det(A)) 1e-6 % 避免除零 pt A \ b_vec; x pt(1); y pt(2); % 检查是否在图像内 if x1 xN y1 yM intersections [intersections; x, y]; end end end end % 凸包计算与筛选 if size(intersections,1) 4 K convhull(intersections(:,1), intersections(:,2)); hull_pts intersections(K, :); if size(hull_pts,1) 4 area polyarea(hull_pts(:,1), hull_pts(:,2)); img_area M * N; if area 0.15 * img_area card_corners hull_pts; % 成功获取四顶点 else error(Convex hull area too small - likely noise); end else error(Convex hull vertices not equal to 4); end else error(Too few valid intersections); end参数说明convhull返回凸包顶点索引K是索引向量hull_pts按逆时针顺序排列可直接用于fitgeotrans。area0.15*img_area是经200份试卷标定的经验阈值低于此值多为装订孔或污渍形成的伪四边形。5. 校正失败的5个典型现象、根因与现场急救方案避坑指南Hough答题卡校正看似流程化但实际部署时83%的失败集中在以下5类。这些不是“配置错误”而是对图像物理特性和算法数学本质的误读。每一条都来自某高校教务系统上线前的紧急回滚事件。5.1 现象校正后答题卡明显“拉伸变形”填涂区变椭圆原因Hough检测到的四条线并非答题卡真实边界而是扫描仪产生的“莫尔条纹”高频干扰线。这些线在频域呈规则网格在空域表现为等距平行线Hough投票极强。解决在校正前插入方向滤波。用fspecial(motion, len, theta)生成运动模糊核沿莫尔条纹主方向通常为0°或90°做反卷积。代码% 先用fft2观察频谱确定莫尔条纹方向theta_moiré H_moiré fspecial(motion, 15, theta_moiré); % len15适配常见条纹周期 I_filtered imfilter(I_denoised, H_moiré, replicate, same);5.2 现象同一份试卷正面校正正常背面校正后旋转90°原因背面常有印刷厂裁切线或胶装压痕形成强直线其Hough投票超过真实边界线。而背面答题卡区域较小四边线段更短投票更弱。解决分面处理。先用regionprops统计连通域面积若最大连通域面积0.3*图像面积则判定为背面强制将Hough搜索角度范围限定在[85°,95°]竖直边和[-5°,5°]水平边避开裁切线。5.3 现象强光反射区域如答题卡右上角导致校正后该角“翘起”原因反射区在Canny边缘图中形成封闭环Hough将其误认为“上边界”。该环的rho值远小于真实上边导致交点上移。解决反射区掩膜。用imopen对原图做顶帽变换imtophat提取亮斑再用bwareaopen去除小区域得到反射掩膜mask_reflect。在校正前将BW_edge中mask_reflect区域置零。5.4 现象多份试卷批量处理时某几张完全失败其余正常原因该试卷扫描时发生“重影”scanner ghosting即前一页内容微弱叠加在当前页。重影在边缘图中形成弱平行线与真实边界线角度接近投票合并导致峰值偏移。解决双尺度Hough。先用粗分辨率1°检测若检测到多于4条高投票线0.4*max_vote则启用细分辨率0.3°并在原图上用roipoly手动框选答题卡大致区域只对该ROI内边缘运行Hough。5.5 现象校正后填涂区ROI切割偏移2~3像素导致判读错误原因Hough交点计算基于浮点解但fitgeotrans内部将坐标转为整数像素索引时四舍五入累积误差。解决亚像素交点优化。对初步得到的四顶点用imref2d定义空间参考再用sub2ind获取亚像素坐标最后调用imwarp时设置OutputView为精确尺寸避免默认插值引入偏移。关键代码% card_corners 是浮点坐标如 [123.7, 45.2; ...] R imref2d(size(I), [1,N], [1,M]); % 定义空间参考 % 使用 interp2 在亚像素精度插值 I_corrected imwarp(I, tform, OutputView, R, Interpolation, cubic);6. 用单应性矩阵反推原始填涂坐标让判读结果可溯源、可审计校正的终极目的不是“看起来正”而是让后续填涂判读坐标能精确映射回原始扫描图。很多方案校正后直接在新图上切ROI一旦发现判读错误无法回溯是校正问题还是判读算法问题。正确做法是保存单应性矩阵T所有填涂坐标均在原始图上计算再用T的逆矩阵映射到校正图做可视化。6.1 从四顶点到单应性矩阵fitgeotrans的隐藏参数fitgeotrans默认用projective模型但答题卡是刚性平面affine更鲁棒且参数少。然而affine要求四点严格共面真实扫描件有透视畸变。折中方案是projective但需传入PolynomialOrder控制拟合精度% card_corners 是原始图上的四顶点浮点 % target_corners 是标准答题卡四顶点如[100,100; 100,2000; 3000,2000; 3000,100] tform fitgeotrans(card_corners, target_corners, projective, ... PolynomialOrder, 2); % 二阶多项式补偿局部畸变PolynomialOrder,2添加了二次项对扫描仪镜头畸变补偿效果比纯projective高12%且不增加过多自由度导致过拟合。6.2 填涂坐标双向映射一个函数解决所有溯源需求封装map_coords函数支持正向原始→校正和反向校正→原始映射function coords_mapped map_coords(coords, tform, direction) % coords: Nx2 矩阵每行[x,y] % direction: forward or inverse if strcmp(direction, forward) coords_mapped transformPointsForward(tform, coords); else coords_mapped transformPointsInverse(tform, coords); end end % 使用示例在原始图上检测到填涂中心P_orig[1523.4, 876.2] P_orig [1523.4, 876.2]; P_corr map_coords(P_orig, tform, forward); % 映射到校正图坐标 % 后续在P_corr附近切30x30窗口做二值化判读 % 若判读存疑用反向映射回溯 P_orig_check map_coords(P_corr, tform, inverse); % 应≈P_orig提示transformPointsForward/Inverse返回浮点坐标务必用round取整后再用imcrop否则imcrop会因坐标非整数触发内部插值引入新误差。6.3 校正质量量化指标三个必看数值每次校正后必须打印以下指标写入日志供审计指标计算方式合格阈值物理意义角度误差mean(abs(atan2d(diff(y), diff(x))))对四边计算0.5°边界线是否真正水平/垂直长宽比偏差abs( (w/h)_corrected - (w/h)_standard ) / (w/h)_standard1.5%是否存在非均匀缩放顶点重投影误差mean(sqrt(sum((card_corners - map_coords(target_corners,tform,inverse)).^2,2)))2.0像素单应性拟合精度我习惯在main.m末尾加一段验证代码任何一项超阈值即warning并保存中间图。这招帮我在某次部署中提前发现扫描仪送纸轮老化导致的系统性倾斜避免了3天后才发现的批量判读错误。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

移动边缘计算中的动态规划卸载算法:MATLAB源码解析与实现指南

移动边缘计算中的动态规划卸载算法:MATLAB源码解析与实现指南

简介:面向移动边缘计算与5G物联网场景的算法学习资源,聚焦动态卸载决策这一核心问题,适合研究边缘计算任务调度的高校师生及开发者。压缩包共9个文件,含6个MATLAB源程序、2个Markdown说明文档和1个PDF论文资料,整体仅4…

2026/10/9 20:38:08 阅读更多 →
用Stata实现PLS-SEM:从测量模型到商业洞察全流程

用Stata实现PLS-SEM:从测量模型到商业洞察全流程

写这篇东西的起因,是后台隔三差五就有人问同一个问题:"Stata能不能跑PLS-SEM?跑出来一堆表格,到底怎么跟老板讲清楚结论?" 说实话,Stata确实不是做PLS-SEM的首选工具,但它的数据管理能…

2026/10/11 2:38:53 阅读更多 →
基于PyQt5和SQLServer的图书管理系统课设设计与避坑指南

基于PyQt5和SQLServer的图书管理系统课设设计与避坑指南

简介:这份名为「数据库课设 基于PythonPyQtSQLServer的图书管理系统源码详细说明全部数据资料(高分项目).zip」的资源,是一套面向计算机相关专业在校学生的高分课程设计完整方案,可用于图书管理系统的课设、期末作业或…

2026/10/11 4:17:10 阅读更多 →

最新新闻

Java GC调优完全指南:从原理到实战排查Full GC与性能优化

Java GC调优完全指南:从原理到实战排查Full GC与性能优化

有人问我,Java面试里“如何对垃圾回收进行调优”这道题到底怎么答才算过关。说实话,这道题问倒过不少人。背几个JVM参数容易,真到线上出了Full GC频繁、接口超时、CPU飙高的时候,很多人还是不知道从哪儿下手。这篇文章我就把GC调优…

2026/10/11 4:37:17 阅读更多 →
大模型压缩三剑客:量化、蒸馏与剪枝

大模型压缩三剑客:量化、蒸馏与剪枝

一、模型压缩技术在保证一些模型性能损耗不大的情况下,使得模型尽可能的小,就是我们要解决的问题。而让模型规模变小,我们称之为模型压缩,所以基于上述背景,如何解决大模型在低资源设备硬件上提升推理效率就是模型压缩…

2026/10/11 4:37:17 阅读更多 →
dsh-skill-mcp-panel 故障排查:从 command not found 到面板可用

dsh-skill-mcp-panel 故障排查:从 command not found 到面板可用

1. 项目概述:这不是面板丢了,是技能链断了“面板不见了、MCP 连不上、命令找不到”——这三句话不是报错日志,是某开发者凌晨两点在协作群里的求救信号。我第一次看到这个标题时,下意识点开不是为了查文档,而是想确认&…

2026/10/11 4:37:17 阅读更多 →
设计行业云桌面选型:性能实测、架构差异与避坑清单

设计行业云桌面选型:性能实测、架构差异与避坑清单

这几年我被问得最多的一句话就是:云桌面到底能不能干设计师的活。问的人里有设计团队负责人、公司IT主管,也有刚起步的自由设计师。他们手头要么堆着一排高配工作站,要么每个月为了显卡、内存的采购审批头疼,听别人说云桌面能集中…

2026/10/11 4:37:17 阅读更多 →
为 Claude Code 接入 Google Search MCP:打破知识截止,实现实时联网搜索

为 Claude Code 接入 Google Search MCP:打破知识截止,实现实时联网搜索

前阵子帮一个项目排查依赖版本问题,我对着 Claude Code 问了一句:"这个包现在最新版本是多少?"它非常肯定地告诉我 2.0.3。结果我顺手去代码仓库看了一眼,最新稳定版早就是 2.4.1 了。那一刻我突然意识到:我…

2026/10/11 4:37:17 阅读更多 →
05.04 · n8n 源码剖析:工作流运行器 Workflow Runner

05.04 · n8n 源码剖析:工作流运行器 Workflow Runner

本文是专栏「n8n 工作流引擎剖析」第 05 章(组件深度剖析)的第 04/11 篇,承接上一篇《Webhook 接入层 Webhook Ingress》。核心是 WorkflowRunner 与 ActiveExecutions。 你在这里: 读完本文,你会知道一次执行是如何被…

2026/10/11 4:36:17 阅读更多 →

日新闻

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

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

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

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

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

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

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

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

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

2026/10/11 0:00:27 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 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/10 5:23: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/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练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/10 10:38:42 阅读更多 →