Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🖼️ 一键去除图片水印工具

一个功能强大、易于使用的图片水印去除工具,支持自动检测水印区域并进行智能修复。

✨ 主要特性

  • 🤖 自动检测水印 - 智能识别图片中的水印区域
  • 手动指定区域 - 精确控制要处理的区域
  • 🎭 掩码模式 - 支持自定义掩码图片
  • 📁 批量处理 - 一次处理多张图片
  • 🎨 多种算法 - 提供Telea和Navier-Stokes两种修复算法
  • 🌐 双界面 - 支持命令行和Web图形界面
  • 🚀 高性能 - 基于OpenCV,处理速度快

📦 安装

前置要求

  • Python 3.7+
  • pip

安装依赖

pip install -r requirements.txt

🚀 快速开始

方式一:Web界面(推荐)

启动Web应用:

streamlit run web_app.py

然后在浏览器中访问显示的URL(通常是 http://localhost:8501

方式二:命令行

1. 自动检测并去除水印

python watermark_remover.py input.jpg

2. 指定输出文件

python watermark_remover.py input.jpg -o output.jpg

3. 使用自定义掩码

python watermark_remover.py input.jpg -m mask.png

4. 手动指定水印区域

# 格式: --manual X Y WIDTH HEIGHT
python watermark_remover.py input.jpg --manual 100 50 200 100

5. 批量处理

python watermark_remover.py -b ./images -od ./output

6. 选择算法和修复半径

python watermark_remover.py input.jpg --method inpaint_ns --radius 5

📖 详细使用说明

命令行参数

positional arguments:
  input                 输入图片路径或目录

optional arguments:
  -h, --help            显示帮助信息
  -o, --output OUTPUT   输出图片路径
  -m, --mask MASK       水印掩码图片路径
  --method {inpaint_ns,inpaint_telea}
                        修复算法 (默认: inpaint_telea)
  --radius RADIUS       修复半径 (默认: 3)
  --no-auto-detect      禁用自动检测(需要提供掩码)
  --manual X Y W H      手动指定水印区域: x y width height
  -b, --batch BATCH     批量处理目录
  -od, --output-dir OUTPUT_DIR
                        批量处理输出目录

算法选择

Telea算法 (推荐)

  • 基于快速行进方法(Fast Marching Method)
  • 处理速度快
  • 效果自然
  • 适合大多数场景

Navier-Stokes方法

  • 基于流体动力学
  • 修复效果更加平滑
  • 处理速度较慢
  • 适合需要高质量修复的场景

修复半径

  • 小半径 (1-3):适合小型水印或精细修复
  • 中等半径 (3-7):适合常规大小的水印
  • 大半径 (8-20):适合大型水印或需要大范围修复

🎯 使用示例

示例1:自动去除照片角落的水印

python watermark_remover.py photo.jpg

工具会自动检测并去除水印,结果保存为 photo_no_watermark.jpg

示例2:去除固定位置的水印

如果你知道水印在图片右下角,位置是(500, 400),大小是200x50:

python watermark_remover.py photo.jpg --manual 500 400 200 50

示例3:使用自定义掩码

如果你有一个精确的掩码图片(白色表示水印区域):

python watermark_remover.py photo.jpg -m watermark_mask.png

示例4:批量处理旅行照片

python watermark_remover.py -b ./vacation_photos -od ./cleaned_photos --radius 5

🌐 Web界面功能

单张图片处理

  • 拖拽上传图片
  • 选择处理模式(自动/手动/掩码)
  • 实时预览处理结果
  • 一键下载处理后的图片

批量处理

  • 同时上传多张图片
  • 批量应用相同的处理参数
  • 显示处理进度
  • 分别下载每张处理后的图片

参数调整

  • 侧边栏实时调整算法和半径
  • 立即看到参数变化的效果

💡 使用技巧

  1. 水印检测效果不佳?

    • 尝试调整修复半径
    • 使用手动模式精确指定区域
    • 使用图像编辑软件创建精确的掩码
  2. 如何获得最佳效果?

    • 对于简单背景:使用自动检测 + 小半径
    • 对于复杂背景:使用手动模式 + 中等半径
    • 对于大型水印:使用较大的修复半径
  3. 批量处理建议

    • 先用单张图片测试参数
    • 确认效果满意后再批量处理
    • 建议保留原始图片备份

🔧 工作原理

本工具使用计算机视觉中的图像修复(Image Inpainting)技术:

  1. 水印检测

    • 分析图像的亮度、色彩分布
    • 使用边缘检测识别文字轮廓
    • 结合多种方法定位水印区域
  2. 图像修复

    • 分析水印周围的像素信息
    • 使用插值算法填充水印区域
    • 保持修复区域与周围的自然过渡

📊 技术栈

  • OpenCV: 图像处理和修复
  • NumPy: 数值计算
  • Pillow: 图像格式处理
  • Streamlit: Web界面

⚠️ 注意事项

  1. 法律合规

    • 请确保你有合法权利去除图片水印
    • 不要侵犯他人的版权和知识产权
    • 本工具仅供学习和合法用途
  2. 效果限制

    • 复杂背景上的水印可能难以完全去除
    • 大面积水印的修复效果可能不够理想
    • 建议在原图质量较好的情况下使用
  3. 性能考虑

    • 大尺寸图片处理时间较长
    • 批量处理时建议控制单次数量
    • 较大的修复半径会增加处理时间

🐛 故障排除

问题:无法安装opencv-python

解决方案

# 尝试安装opencv-python-headless
pip install opencv-python-headless

问题:Web界面无法启动

解决方案

# 确保安装了所有依赖
pip install -r requirements.txt

# 检查Streamlit版本
streamlit --version

问题:处理效果不理想

解决方案

  • 尝试不同的算法(Telea vs Navier-Stokes)
  • 调整修复半径
  • 使用手动模式精确指定区域
  • 尝试使用图像编辑软件创建更精确的掩码

📝 更新日志

v1.0.0 (2025-11-25)

  • ✨ 初始版本发布
  • 🤖 支持自动水印检测
  • ✋ 支持手动区域指定
  • 🎭 支持自定义掩码
  • 📁 支持批量处理
  • 🌐 提供Web图形界面
  • 💻 提供命令行工具

📄 许可证

本项目仅供学习和研究使用。使用本工具时请遵守相关法律法规,尊重他人的知识产权。

🤝 贡献

欢迎提交Issue和Pull Request!

📧 联系方式

如有问题或建议,欢迎通过以下方式联系:

  • 提交Issue
  • 发送邮件

⭐ 如果这个工具对你有帮助,欢迎给个Star!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages