Python图片网格化分割:从原理到批量处理实战
1. 图片网格化分割到底在切什么第一次听到“图片网格化分割”这个词很多人脑子里浮现的是把一张照片切成九宫格发朋友圈。这个理解不算错但只摸到了皮毛。真正的网格化分割是把一张完整图像按照固定的行数和列数机械地切成 M×N 个等尺寸的小图块每个图块独立保存或独立处理。它不关心图片里有什么内容不识别主体不做语义理解纯粹按坐标切分。这件事听起来简单到不值一提但我在实际项目里用它解决过不少麻烦。比如做图像分类数据集的时候手头只有几十张大图标注成本高得离谱把每张大图切成小块之后样本量直接翻了十几倍而且每个小图块还能单独做数据增强。再比如做文档扫描件的局部识别整页识别精度不够切成网格后逐块处理准确率明显提升。还有做拼图游戏、做马赛克预览、做图像分块压缩传输底层都是同一套逻辑。Python 做这件事有天然优势。Pillow 库几行代码就能搞定基本切分OpenCV 和 NumPy 配合能玩出更多花样。但真正要写好一个健壮的网格化分割工具要考虑的东西远比想象中多边界怎么处理、尺寸除不尽怎么办、切完怎么命名、批量处理怎么加速、内存怎么控制。这些细节才是区分“能跑”和“好用”的关键。这篇文章适合谁看如果你刚学 Python 图像处理想找一个能立刻上手的小项目练手网格化分割是绝佳选择。如果你已经在做深度学习数据预处理需要一套可靠的切图方案这里面的参数计算和避坑经验能帮你省不少时间。如果你只是想把一张大图切成壁纸尺寸的小图下面的代码直接抄就能用。提示网格化分割和图像分块tiling在概念上高度重叠但网格化更强调规则的行列切分分块则可能包含重叠区域或自适应尺寸。本文聚焦规则网格切分后续会提到重叠切分的扩展思路。2. 核心思路与方案选型2.1 为什么选 Pillow 而不是 OpenCVPython 里处理图像的主流库就那么几个Pillow、OpenCV、scikit-image、imageio。做网格化分割我首选 Pillow。原因很直接Pillow 的 crop 方法语义清晰坐标系统直观安装轻量不依赖一堆系统库。OpenCV 当然也能做用 NumPy 切片就行但 OpenCV 的安装在某些环境下会碰到依赖问题而且它的 BGR 通道顺序对新手不太友好。不过 OpenCV 在批量处理大图时速度确实有优势因为它的底层是 C 优化过的。如果你要处理几千张高分辨率图片OpenCV 的 NumPy 切片方式可能比 Pillow 快 20% 到 30%。但差距没有想象中那么大Pillow-SIMD 版本Pillow 的 SIMD 优化分支能把差距抹平甚至反超。我的建议是日常使用 Pillow追求极致速度且环境允许时用 OpenCV。两者代码逻辑几乎一样切换成本很低。2.2 切分尺寸的计算逻辑这是整个项目最核心的部分。假设原图宽度为 W高度为 H要切成 rows 行 cols 列那么每个小块的宽度是 W/cols高度是 H/rows。但问题来了W 不一定能被 cols 整除。举个例子一张 1920×1080 的图切成 3×3 网格。1920/3640刚好整除。1080/3360也整除。完美。但如果是 1920×1081 呢1081/3360.333...除不尽。这时候有三种处理策略向下取整丢弃边缘每个小块取 360 像素高3 行共 1080 像素最后 1 像素被丢掉。简单粗暴适合对边缘不敏感的场景。向上取整边缘补零每个小块取 361 像素高最后一行超出原图的部分用黑色或白色填充。适合需要保持网格规整的场景。动态分配余数分摊前几个块多 1 像素后面的块少 1 像素保证总高度不变。最精确但代码稍复杂。我在实际项目里最常用的是第三种因为它不丢信息也不引入人工填充。具体做法是用divmod函数算出商和余数然后前余数个块各多分 1 像素。def calculate_grid_sizes(total, parts): base, remainder divmod(total, parts) sizes [] for i in range(parts): if i remainder: sizes.append(base 1) else: sizes.append(base) return sizes这段代码值得反复看。divmod(1081, 3)返回(360, 1)意思是每块至少 360多出 1 像素分给第一块。最终尺寸列表是[361, 360, 360]加起来正好 1081。不丢像素不补黑边完美。2.3 命名规则与输出结构切完的图怎么命名这事看着小但批量处理时命名混乱会让你痛不欲生。我踩过的坑早期用output_0.jpg、output_1.jpg这种全局递增编号结果切了 100 张原图输出目录里 10000 个文件混在一起根本分不清哪个块属于哪张原图。后来改成两级目录结构每张原图对应一个子文件夹子文件夹名就是原图文件名去掉扩展名里面的小图按row_col.jpg命名。比如photo1/0_0.jpg、photo1/0_1.jpg、photo1/1_0.jpg。这样结构清晰回溯方便做数据集时直接按文件夹划分训练集验证集也不会乱。如果你需要把切块重新拼回原图命名里必须包含行列信息。row_col格式最直观解析也简单用split(_)就能拿到坐标。注意文件名里不要用中文或特殊字符某些深度学习框架的 DataLoader 对非 ASCII 路径支持不好会在你意想不到的地方报错。3. 核心细节与实操要点3.1 坐标计算左闭右开原则Pillow 的crop方法接收一个四元组(left, upper, right, lower)遵循左闭右开原则。也就是说right和lower坐标对应的像素不包含在裁剪结果里。这个细节极其重要搞错了会导致相邻块之间要么重叠一列像素要么漏掉一列像素。假设每块宽度为w第col块的左边界是col * w右边界是(col 1) * w。当col从 0 到cols-1遍历时最后一块的右边界正好等于原图宽度。这就是左闭右开的精妙之处不用做任何特殊处理循环自然覆盖全图。但如果你用的是动态尺寸分配前面说的第三种策略每块宽度不一样就不能简单用col * w了。需要先累加前面所有块的宽度得到当前块的起始位置。x_offsets [0] for w in col_widths: x_offsets.append(x_offsets[-1] w) # 第 col 块的左边界是 x_offsets[col]右边界是 x_offsets[col1]这种累加方式通用性最强不管尺寸是否均匀都能正确工作。我现在的代码里统一用这种写法省得每次都要判断能不能整除。3.2 批量处理的目录遍历批量处理时遍历目录用pathlib.Path比os.path舒服得多。Path.glob(*.jpg)一行就能拿到所有 JPG 文件还能链式调用.sorted()排序。更重要的是pathlib的路径拼接用/运算符写起来像自然语言。from pathlib import Path input_dir Path(input_images) output_dir Path(output_tiles) output_dir.mkdir(parentsTrue, exist_okTrue) for img_path in sorted(input_dir.glob(*.jpg)): stem img_path.stem # 文件名不含扩展名 save_dir output_dir / stem save_dir.mkdir(exist_okTrue) # 后续处理...这段代码里mkdir(parentsTrue, exist_okTrue)是标准操作。parentsTrue表示如果父目录不存在就一起创建exist_okTrue表示目录已存在时不报错。少了任何一个参数第二次运行脚本就会崩。3.3 内存控制别一次性读入所有图新手最容易犯的错是把所有图片读进内存再处理。一张 4000×3000 的 RGB 图在内存里占 4000×3000×3 字节约 34MB。100 张就是 3.4GB普通笔记本直接爆内存。正确做法是流式处理读一张切一张存一张释放一张。Python 的垃圾回收机制会在变量重新赋值时自动释放旧对象你只需要确保不要在列表里累积图像对象。for img_path in sorted(input_dir.glob(*.jpg)): with Image.open(img_path) as img: # 在 with 块内完成所有切分和保存 # 离开 with 块后文件句柄自动关闭 ...用with语句打开图片还有个好处Pillow 是惰性加载的Image.open只读文件头真正的像素数据在你调用crop或load时才读取。with块确保文件句柄及时释放避免“打开文件过多”的错误。3.4 图像格式与质量参数保存切块时格式选择影响文件大小和后续处理。JPEG 适合照片类图像PNG 适合有透明通道或需要无损保存的场景。如果原图是 PNG 但切块要用于深度学习训练转成 JPEG 能大幅减小文件体积加快数据加载速度。JPEG 的quality参数范围是 1 到 95100 表示无损但文件巨大。我一般用 90 到 95肉眼几乎看不出差异文件大小比 100 小一半以上。optimizeTrue会让 Pillow 尝试无损压缩稍微增加保存时间但能再减小几个百分点。tile.save(save_path, quality92, optimizeTrue)如果是 PNG可以用compress_level参数控制压缩级别0 最快文件最大9 最慢文件最小。默认是 6平衡得不错一般不用改。提示保存切块时不要用img.save()直接保存 crop 返回的对象因为 crop 返回的是新图像对象但某些元数据如 EXIF可能丢失。如果需要保留 EXIF得手动复制。4. 完整实操流程与代码实现4.1 基础版等尺寸切分先上最简版本适合快速验证和简单场景。这个版本假设图片尺寸能被网格整除不处理边界情况。from PIL import Image from pathlib import Path def split_image_grid(img_path, output_dir, rows, cols): img Image.open(img_path) w, h img.size tile_w w // cols tile_h h // rows stem Path(img_path).stem save_dir Path(output_dir) / stem save_dir.mkdir(parentsTrue, exist_okTrue) for r in range(rows): for c in range(cols): left c * tile_w upper r * tile_h right left tile_w lower upper tile_h tile img.crop((left, upper, right, lower)) tile.save(save_dir / f{r}_{c}.jpg, quality92) img.close() # 使用示例 split_image_grid(test.jpg, output, rows3, cols3)这段代码 20 行不到能解决 80% 的简单需求。但注意w // cols是向下取整如果除不尽右边和下边的边缘像素会被丢弃。对于 1920×1080 切 3×3 这种整除情况没有任何问题。4.2 进阶版动态尺寸分配现在处理除不尽的情况。核心是用前面说的calculate_grid_sizes函数算出每块的实际尺寸然后累加得到坐标偏移。from PIL import Image from pathlib import Path def calculate_grid_sizes(total, parts): base, remainder divmod(total, parts) return [base 1 if i remainder else base for i in range(parts)] def split_image_grid_advanced(img_path, output_dir, rows, cols): img Image.open(img_path) w, h img.size col_widths calculate_grid_sizes(w, cols) row_heights calculate_grid_sizes(h, rows) x_offsets [0] for cw in col_widths: x_offsets.append(x_offsets[-1] cw) y_offsets [0] for rh in row_heights: y_offsets.append(y_offsets[-1] rh) stem Path(img_path).stem save_dir Path(output_dir) / stem save_dir.mkdir(parentsTrue, exist_okTrue) for r in range(rows): for c in range(cols): left x_offsets[c] upper y_offsets[r] right x_offsets[c 1] lower y_offsets[r 1] tile img.crop((left, upper, right, lower)) tile.save(save_dir / f{r}_{c}.jpg, quality92) img.close()用 1920×1081 的图切 3×3 测试col_widths是[640, 640, 640]row_heights是[361, 360, 360]。y_offsets是[0, 361, 721, 1081]。最后一块的下边界是 1081正好等于原图高度。所有像素都被覆盖没有丢失也没有重复。4.3 批量处理版带进度显示处理大量图片时没有进度显示会让人焦虑。用tqdm库加个进度条几行代码的事。from PIL import Image from pathlib import Path from tqdm import tqdm def batch_split(input_dir, output_dir, rows, cols): input_path Path(input_dir) output_path Path(output_dir) output_path.mkdir(parentsTrue, exist_okTrue) image_files sorted(input_path.glob(*.jpg)) sorted(input_path.glob(*.png)) for img_path in tqdm(image_files, desc切分进度): try: img Image.open(img_path) w, h img.size col_widths calculate_grid_sizes(w, cols) row_heights calculate_grid_sizes(h, rows) x_offsets [0] for cw in col_widths: x_offsets.append(x_offsets[-1] cw) y_offsets [0] for rh in row_heights: y_offsets.append(y_offsets[-1] rh) save_dir output_path / img_path.stem save_dir.mkdir(exist_okTrue) for r in range(rows): for c in range(cols): tile img.crop(( x_offsets[c], y_offsets[r], x_offsets[c 1], y_offsets[r 1] )) tile.save(save_dir / f{r}_{c}.jpg, quality92) img.close() except Exception as e: print(f处理 {img_path.name} 时出错: {e}) continuetqdm的desc参数给进度条加描述文字处理大批量时一眼就能看出在干什么。try-except块确保单张图片出错不会中断整个批次错误信息打印出来方便排查。4.4 参数选择与性能实测我用一台普通笔记本i5 处理器16GB 内存做了组实测数据供参考图片数量单图尺寸网格总耗时平均每张1001920×10803×38.2秒82毫秒1004000×30004×431.5秒315毫秒5001920×10803×339.8秒80毫秒5004000×30004×4156秒312毫秒耗时主要花在图片解码和 JPEG 编码上crop 操作本身几乎不耗时。如果换成 PNG 输出耗时增加约 40%因为 PNG 压缩更慢。如果输出质量从 92 降到 80耗时减少约 15%文件大小减少约 30%。实操心得如果切块是用于深度学习训练质量设 85 到 90 足够再高对模型精度几乎没有提升但会显著增加磁盘 I/O 时间。训练时的数据加载瓶颈往往在磁盘读取不在解码。5. 常见问题与排查技巧5.1 切块边缘出现黑边或白边这是最常见的问题通常是因为用了向上取整策略但填充了默认颜色。检查你的尺寸计算逻辑如果用了math.ceil而不是divmod最后一块的右边界或下边界会超出原图范围Pillow 的 crop 会自动用黑色填充超出部分。解决方法改用divmod动态分配或者手动把最后一块的边界钳制到原图尺寸。我推荐前者代码更统一不用写特殊判断。5.2 相邻切块之间有重叠或缝隙重叠通常是因为右边界计算错误比如用了left tile_w 1。缝隙是因为右边界用了left tile_w - 1。记住左闭右开原则右边界就是下一块的左边界不要加一减一。如果你确实需要重叠切块比如做图像拼接时避免接缝那就在计算右边界时加上重叠像素数但要注意最后一块的右边界不能超过原图宽度。5.3 内存占用过高导致程序崩溃前面提过不要把所有图片读进内存。但还有一个隐藏陷阱Pillow 的Image.open是惰性的如果你在循环里打开图片但没有及时关闭文件句柄会累积。用with语句或者手动调用img.close()。另外如果你在 Jupyter Notebook 里跑代码变量不会自动回收处理完一批图片后手动del img并调用gc.collect()能释放内存。5.4 保存的切块文件名冲突如果两张原图文件名相同但位于不同子目录切块输出到同一个目录时会覆盖。解决方法是用原图的完整相对路径生成唯一标识或者保持两级目录结构每张原图一个子文件夹。我习惯用img_path.stem作为子文件夹名但如果不同子目录下有同名文件还是会有冲突。更稳妥的做法是用img_path.parent.name _ img_path.stem作为文件夹名把父目录名也带上。5.5 处理透明 PNG 时背景变黑PNG 有 RGBA 四个通道JPEG 只有 RGB 三个通道。把 RGBA 图片保存为 JPEG 时透明区域会变成黑色。解决方法是在保存前把透明背景合成到白色背景上if img.mode RGBA: background Image.new(RGB, img.size, (255, 255, 255)) background.paste(img, maskimg.split()[3]) img background这段代码创建一个白色背景图然后用原图的 alpha 通道作为掩码把原图贴上去。透明区域自然显示为白色。5.6 常见问题速查表问题现象可能原因解决方法边缘黑边向上取整未钳制边界改用 divmod 动态分配切块重叠右边界多加像素检查左闭右开逻辑切块有缝隙右边界少减像素右边界等于下一块左边界内存爆满累积图像对象流式处理及时 close文件名冲突同名原图覆盖两级目录或加父目录前缀透明变黑RGBA 转 RGB合成白色背景处理速度慢JPEG 质量过高降到 85-90进度无显示未加进度条用 tqdm 包装循环避坑技巧在正式处理大批量图片前先用 5 张图片做测试检查输出目录结构、切块尺寸、边缘处理是否符合预期。确认无误后再跑全量能避免大量返工。6. 扩展玩法与进阶思路6.1 重叠切块用于图像拼接做全景图拼接或超分辨率重建时切块之间需要重叠区域否则拼接缝会很明显。实现方法很简单在计算右边界和下边界时加上重叠像素数overlap。right min(left tile_w overlap, w) lower min(upper tile_h overlap, h)min确保不超出原图边界。重叠区域的大小通常是切块尺寸的 10% 到 20%太小拼接效果不好太大计算量浪费。6.2 按内容自适应切分规则网格切分不关心图片内容但有时候我们希望切块尽量不切断主体。一个简单思路是先用边缘检测找出图像中的主要轮廓然后调整网格线位置避开轮廓密集区域。这属于内容感知切分实现复杂度高不少但效果在某些场景下提升明显。更实用的做法是结合目标检测先用检测模型找出所有目标框然后根据目标框分布动态规划网格线位置。这个思路在遥感图像处理和医学图像分析里用得比较多。6.3 切块后批量数据增强切块用于深度学习训练时可以在切分的同时做数据增强。比如随机翻转、随机旋转小角度、随机调整亮度对比度。Pillow 的ImageOps和ImageEnhance模块提供了这些功能几行代码就能集成到切分流程里。但要注意增强后的切块如果用于目标检测任务标注框坐标也要同步变换。这是另一个话题了展开讲能写一整篇。6.4 用多进程加速批量处理Python 的 GIL 限制了多线程在 CPU 密集型任务上的效果但多进程可以绕过这个限制。用concurrent.futures.ProcessPoolExecutor把图片列表分成多份每个进程处理一部分速度能提升 3 到 4 倍取决于 CPU 核心数。from concurrent.futures import ProcessPoolExecutor def process_single(img_path): # 切分逻辑 pass with ProcessPoolExecutor(max_workers4) as executor: executor.map(process_single, image_files)注意多进程下每个进程有独立内存空间不能共享图像对象。每个进程需要自己打开和关闭图片。另外Windows 系统下多进程需要把主逻辑放在if __name__ __main__:块里否则会无限递归创建进程。我在实际使用中发现多进程加速在图片数量超过 200 张时效果明显少于 50 张时进程创建和通信的开销反而拖慢速度。所以小批量任务直接用单进程就好别为了用而用。最后分享一个小技巧如果你经常需要调整网格参数做对比实验把切分逻辑封装成命令行工具会方便很多。用argparse接收输入目录、输出目录、行数、列数、输出质量等参数一行命令就能跑不同配置不用每次改代码。这个工具我用了两年多处理过几十万张图片稳定性经过验证。

相关新闻

海南商业航天发射场:填补空白,撬动高频发射产业链

海南商业航天发射场:填补空白,撬动高频发射产业链

这两年搞商业航天的团队越来越多,但不少火箭造出来了,真正卡住他们的往往不是技术,而是一个很现实的问题——去哪儿发射。海南商业航天发射场就是冲着这个空白去的:它是国内第一个专门为商业火箭搭建的发射阵地,定位就…

2026/10/16 4:45:24 阅读更多 →
Deepin 20安装佳能LBP2900打印机驱动实战指南

Deepin 20安装佳能LBP2900打印机驱动实战指南

1. 项目概述:为什么在Deepin 20(1002)上装LBP2900不是“点几下就完事”的事?你刚拿到一台二手LBP2900,或者办公室里那台服役十年的老打印机突然被新配的Deepin 20电脑“拒之门外”——系统识别出设备,但点击…

2026/10/16 4:45:24 阅读更多 →
llama.cpp与GGUF完全指南:本地大模型推理与量化实战

llama.cpp与GGUF完全指南:本地大模型推理与量化实战

1. 本地大模型跑起来的真相:llama.cpp 和 GGUF 到底是什么关系第一次接触 llama.cpp 的时候,我脑子里只有一个疑问:为什么大家都在说它,却没人把它和模型文件的关系讲清楚。后来自己折腾了几个晚上才明白,这俩其实是两…

2026/10/16 4:45:24 阅读更多 →

最新新闻

Python入门必破关:PTA判题机制与输出输入规范解析

Python入门必破关:PTA判题机制与输出输入规范解析

/* 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 5:29:36 阅读更多 →
VS2019+EasyX实现简易坦克射击游戏

VS2019+EasyX实现简易坦克射击游戏

1. 项目概述:为什么一个“简易坦克射击游戏”值得花时间重做一遍在某高校计算机基础课的实训环节里,我连续三年带学生做图形化小项目,从贪吃蛇、扫雷到推箱子,直到去年有位同学交上来一份用VS2019 EasyX写的坦克对战Demo——虽然…

2026/10/16 5:29:36 阅读更多 →
Element Plus el-tooltip 样式定制:宽度与字体设置详解

Element Plus el-tooltip 样式定制:宽度与字体设置详解

1. 项目概述Element Plus 的 el-tooltip 是个好用但有时候让人挠头的组件。默认效果很干净,悬停弹出一个小气泡,但当产品经理说“这个提示文字太挤了,放宽一点”“这个字号太小了看不清”的时候,你会发现默认样式怎么改都不太对劲…

2026/10/16 5:29:36 阅读更多 →
基于MP2642GR-Z和PIC18F87K22的2S电池组主动均衡方案设计

基于MP2642GR-Z和PIC18F87K22的2S电池组主动均衡方案设计

/* 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 5:29:36 阅读更多 →
C#实战:JSON转Excel导出的完整方案与性能优化

C#实战:JSON转Excel导出的完整方案与性能优化

/* 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 5:29:36 阅读更多 →
OpenPose实战避坑指南:多人姿态估计与骨骼角度计算

OpenPose实战避坑指南:多人姿态估计与骨骼角度计算

/* 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 5:28:35 阅读更多 →

日新闻

个人 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/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 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/15 9:49:14 阅读更多 →