再也不用充会员、找在线工具!两行代码搞定两大高频需求,新手也能直接抄作业AI大模型可以帮你生成图片和视频,但是有背景有水印是个麻烦事。再加上日常做PPT要抠透明底图、做电商主图去背景、二次创作处理素材,这些高频需求总能让人头疼。
要么在线工具限次数、要会员,要么抠图边缘生硬、去水印留痕迹,还担心上传素材泄露隐私。
今天给大家分享两套纯Python本地脚本,全程免费、无需联网、操作简单,抠图媲美专业软件,视频去水印自然无痕,新手跟着步骤走就能上手!
一、批量图片去背景:智能抠图,零门槛操作
平时做海报、设计素材、电商主图,最费时间的就是抠图。这款Python工具基于深度学习算法,人物、商品、动物、静物都能精准识别,边缘过渡自然,还支持批量处理,一次搞定几十张图。
✨ 核心工具:rembg
轻量级深度学习抠图库,不用搭建复杂环境,一行命令安装,CPU就能流畅运行,有NVIDIA显卡还能切换GPU加速,速度翻倍。
🛠️ 第一步:环境安装
打开电脑终端(CMD/PowerShell),直接复制粘贴运行,无需额外配置:
# CPU版本(通用推荐)pip install "rembg[cpu]" pillow# NVIDIA显卡用户,安装GPU版加速pip install "rembg[gpu]"
📸 单张图片去背景(极简代码)
适合单张素材快速处理,代码不足10行,复制就能用:
from rembg import removefrom PIL import Image# 替换成你的图片路径input_image = Image.open("input.png")# 一键去背景output_image = remove(input_image)# 保存为PNG(保留透明通道)output_image.save("output.png")print("抠图完成!")
📂 批量去背景(效率神器)
针对大量图片优化,自动遍历文件夹,不用一张张手动处理:
import osfrom pathlib import Pathfrom rembg import removefrom PIL import Image# 【可修改】配置输入输出文件夹INPUT_DIR = "原始图片"OUTPUT_DIR = "去背景图片"# 支持的图片格式FORMATS = {'.png', '.jpg', '.jpeg', '.webp'}def batch_remove_bg(): # 自动创建输出文件夹 Path(OUTPUT_DIR).mkdir(exist_ok=True) success = 0 # 遍历所有图片 for filename in os.listdir(INPUT_DIR): ext = os.path.splitext(filename)[1].lower() if ext not in FORMATS: continue input_path = os.path.join(INPUT_DIR, filename) output_path = os.path.join(OUTPUT_DIR, f"{os.path.splitext(filename)[0]}.png") try: with Image.open(input_path) as img: result = remove(img) result.save(output_path, 'PNG') print(f"✓ 处理成功:{filename}") success += 1 except Exception as e: print(f"✗ 处理失败:{filename},原因:{e}") print(f"\n✅ 全部完成!共成功处理 {success} 张图片") print(f"📁 输出路径:{OUTPUT_DIR}")if __name__ == "__main__": batch_remove_bg()
效果如下图:
✅ 实操步骤(新手必看)
在脚本同目录下,新建“原始图片”文件夹,放入所有待处理图片
运行Python脚本,等待程序自动执行
去背景后的透明底图片,会自动保存在“去背景图片”文件夹
效果说明:主体与背景对比度越高,抠图效果越精准,复杂背景可先微调亮度对比度再处理。
二、视频去水印:无痕修复,保留画质
最近爆火的豆包Seedance 2.0确实好用,提示词+参考图就能生成高质视频,可自带水印太影响使用;其他视频生成大模型又价格不菲,想无水印创作成本太高。剪辑这类AI素材时遇到顽固水印?不用开会员、不用花高价,用OpenCV图像修复技术,分析水印周边像素自动填充,处理后痕迹极淡,完美保留原生视频画质。
✨ 核心原理
采用inpaint图像修复算法,定位水印区域后,自动用周边纹理填充覆盖,适合固定位置的纯色、半透明水印。温馨提示:这套免费本地方案,效果会略逊于专业付费去水印软件,对复杂半透明水印、动态水印的修复痕迹会稍明显,属于算法特性,日常二次创作、素材处理完全够用,追求极致效果可按需搭配付费工具。
🛠️ 第一步:环境安装
# 安装核心库pip install opencv-python-headless numpy
额外安装ffmpeg(用于后续音频合并,必装):
macOS:终端运行 brew install ffmpeg
Ubuntu:终端运行 sudo apt install ffmpeg
Windows:官网下载安装,添加到系统环境变量即可
🎬 完整去水印代码
只需修改水印坐标,适配所有视频,代码注释超详细:
import cv2import numpy as np# ========== 【必填】修改此处配置 ==========INPUT_VIDEO = "input.mp4" # 输入视频路径OUTPUT_VIDEO = "output_clean.mp4" # 输出无水印视频# 水印坐标:x=左边距,y=上边距,w=宽度,h=高度WATERMARKS = [ {"x": 50, "y": 50, "w": 200, "h": 60}, # 左上角水印 # 多水印直接追加,示例: # {"x": 1600, "y": 50, "w": 250, "h": 60},]# ======================================# 创建水印遮罩def create_mask(width, height): mask = np.zeros((height, width), dtype=np.uint8) for wm in WATERMARKS: cv2.rectangle(mask, (wm["x"], wm["y"]), (wm["x"]+wm["w"], wm["y"]+wm["h"]), 255, -1) return mask# 单帧修复def process_frame(frame, mask): return cv2.inpaint(frame, mask, inpaintRadius=10, flags=cv2.INPAINT_NS)def main(): print("="*40) print("🎥 视频去水印工具启动") print("="*40) # 打开视频 cap = cv2.VideoCapture(INPUT_VIDEO) if not cap.isOpened(): print("❌ 错误:无法打开视频,请检查路径") return # 获取视频参数 width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) fps = cap.get(cv2.CAP_PROP_FPS) total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) print(f"📹 视频信息:{width}x{height} | {fps}帧/秒 | 共{total_frames}帧") print(f"📍 检测到 {len(WATERMARKS)} 处水印") mask = create_mask(width, height) fourcc = cv2.VideoWriter_fourcc(*'mp4v') out = cv2.VideoWriter(OUTPUT_VIDEO, fourcc, fps, (width, height)) # 逐帧处理 frame_count = 0 while True: ret, frame = cap.read() if not ret: break processed = process_frame(frame, mask) out.write(processed) frame_count += 1 if frame_count % 30 == 0: progress = round(frame_count/total_frames*100, 1) print(f"⏳ 处理进度:{progress}%") cap.release() out.release() print("="*40) print(f"✅ 视频去水印完成:{OUTPUT_VIDEO}") print("💡 提示:执行下方命令合并音频") print('='*40)if __name__ == "__main__": main()
✅ 实操四步走
测坐标:截一张视频图,用截图工具测出水印的x、y、宽、高
改配置:替换代码里的视频路径和水印坐标
跑脚本:运行代码,等待视频处理完成
合音频:终端执行命令,把原视频音频合并回去
# 音频合并命令,直接复制运行ffmpeg -i "output_clean.mp4" -i "input.mp4" -c:v copy -c:a aac final.mp4
📍 快速获取水印坐标
复制下方脚本,截图后运行,点击水印位置即可打印坐标:
import cv2def get_pos(event, x, y, flags, param): if event == cv2.EVENT_LBUTTONDOWN: print(f"坐标:x={x}, y={y}")img = cv2.imread("video_frame.png")cv2.namedWindow("点击水印")cv2.setMouseCallback("点击水印", get_pos)cv2.imshow("点击水印", img)cv2.waitKey(0)
我用豆包seedance2.0生成的视频中,会在左中、右上、右下三个地方切换出现水印。用上述方法实际截图效果如下:
三、高频问题解答(避坑指南)
❓ 去背景效果差怎么办?
优先保证主体清晰,与背景有明显色差
暗光、模糊图片先调亮度对比度再处理
复杂背景可局部手动微调,配合修图软件优化
❓ 去水印后有痕迹?
❓ 处理速度太慢?
4K视频也可建议转1080P再处理,速度提升4倍
显卡用户切换GPU版本库,大幅加速
批量任务可开启多进程,提升效率
四、工具总结
这两套脚本最大的优势就是本地运行、完全免费、无隐私风险,不用上传素材,不用看广告,适合办公、设计、剪辑各类人群。
觉得干货实用,记得点赞+在看+转发,收藏起来随时用~