当前位置:首页>python>Python干货|一键抠图去背景+视频去水印,免费无广告,本地就能跑!

Python干货|一键抠图去背景+视频去水印,免费无广告,本地就能跑!

  • 2026-09-22 10:14:58
Python干货|一键抠图去背景+视频去水印,免费无广告,本地就能跑!

喜欢你就关注我

再也不用充会员、找在线工具!两行代码搞定两大高频需求,新手也能直接抄作业

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()

效果如下图:

✅ 实操步骤(新手必看)

  1. 在脚本同目录下,新建“原始图片”文件夹,放入所有待处理图片

  2. 运行Python脚本,等待程序自动执行

  3. 去背景后的透明底图片,会自动保存在“去背景图片”文件夹

效果说明:主体与背景对比度越高,抠图效果越精准,复杂背景可先微调亮度对比度再处理。

二、视频去水印:无痕修复,保留画质

最近爆火的豆包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()

✅ 实操四步走

  1. 测坐标:截一张视频图,用截图工具测出水印的x、y、宽、高

  2. 改配置:替换代码里的视频路径和水印坐标

  3. 跑脚本:运行代码,等待视频处理完成

  4. 合音频:终端执行命令,把原视频音频合并回去

# 音频合并命令,直接复制运行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生成的视频中,会在左中、右上、右下三个地方切换出现水印。用上述方法实际截图效果如下:

三、高频问题解答(避坑指南)

❓ 去背景效果差怎么办?

  • 优先保证主体清晰,与背景有明显色差

  • 暗光、模糊图片先调亮度对比度再处理

  • 复杂背景可局部手动微调,配合修图软件优化

❓ 去水印后有痕迹?

  • 调大 inpaintRadius 参数(建议15-20)

  • 水印区域框选稍大一点,完全覆盖水印

  • 半透明水印效果略逊于纯色水印,属于正常现象

❓ 处理速度太慢?

  • 8K视频慎跑:亲测8K视频运行时电脑风扇直接呼呼作响,算力压力极大,建议直接终止改用4K版本

  • 4K视频也可建议转1080P再处理,速度提升4倍

  • 显卡用户切换GPU版本库,大幅加速

  • 批量任务可开启多进程,提升效率

四、工具总结

工具
核心用途
优势
rembg
图片去背景、智能抠图
精准抠边、批量处理、CPU可用
OpenCV
视频去水印、图像修复
无痕填充、保留画质、本地安全

这两套脚本最大的优势就是本地运行、完全免费、无隐私风险,不用上传素材,不用看广告,适合办公、设计、剪辑各类人群。

觉得干货实用,记得点赞+在看+转发,收藏起来随时用~

最新文章

随机文章