文章目录
- .Net AI学习笔记系列
- 前言
- 一、OpenCVSharp实操——图片去水印
- 二、步骤
- 1.开发工具
- 2.引入库
- 3.示例代码
- 4.运行效果
- 总结
前言
本文主要介绍用掩码模板+inpaint函数实现去除图片中的水印。
一、OpenCVSharp实操——图片去水印
示例展示了一步一步去掉一张图片的水印。
二、步骤
1.开发工具
VS2019+.net 4.8+OpenCvSharp4
2.引入库
Install-Package OpenCvSharp4
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using OpenCvSharp;
using OpenCvSharp.Extensions;
3.示例代码
代码如下(示例):
首先,准备一张带水印的图
第一步,读取上述图片
Mat src = Cv2.ImRead(this.imgPath);
第二步,创建掩码图片
// 创建一个与原始图像大小相同的全黑图像作为掩码
Mat mask = new Mat(src.Rows, src.Cols, MatType.CV_8UC1, Scalar.Black);
//在其上定义水印区域
int maskWidth = 110;
int maxkHeight = 55;
Rect watermarkRect = new Rect(src.Width- maskWidth, src.Height- maxkHeight, maskWidth, maxkHeight);
// 在掩码中绘制一个白色矩形,表示需要保留的区域
Cv2.Rectangle(mask, watermarkRect, Scalar.White, -1);
第三步,使用 inpaint 函数修复水印区域,达到去除水印的目的
Cv2.Inpaint(src, mask, dst, 3, InpaintMethod.Telea);
4.运行效果
总结
掩码+inpaint 函数去水印的方法 相对来说比较麻烦,首先需要定位到水印在图片上的区域,再使用Cv2.Inpaint函数修复原始图像中的缺失区域,从而达到去除图片水印的目的。不过每次去除水印都要需要根据具体情况调整缺失区域的位置和大小,以获得最佳的修复效果。