Opencv [去除水印]

一、原图

二、代码

cpp 复制代码
#include <iostream>
#include<opencv2/opencv.hpp> 

using namespace std;
using namespace cv;

/**
 * @brief 程序的入口函数
 * 
 * 此函数是程序执行的起点,打印一条问候语到标准输出,并返回一个退出状态码。
 * 
 * @return int 返回 0 表示程序正常结束。
 */
int main() 
{ 
    Mat src = imread("D:\\Project\\OpenCV\\DADMP.png");
	if (src.empty())
	{
		cout << "No Image!" << endl;
		system("pause");
		return -1;
	}

	Mat gray;
	cvtColor(src, gray, COLOR_BGR2GRAY);

	//图像二值化,筛选出白色区域部分
	Mat thresh;
	threshold(gray, thresh, 127, 255, THRESH_BINARY);

	//提取图片下方的水印,制作掩模图像
	Mat mask = Mat::zeros(src.size(), CV_8U);
	int height = src.rows;
	int width = src.cols;
	int start = 0.9*height;
	//遍历图像像素,提取出水印部分像素,制作掩模图像
	for (int i = start; i < height; i++)
	{
		uchar*data = thresh.ptr<uchar>(i);
		for (int j = 0; j < width; j++)
		{
			if (data[j] == 255)
			{
				mask.at<uchar>(i, j) = 255;			
			}			
		}
	}

	//将掩模进行膨胀,使其能够覆盖图像更大区域
	Mat kernel = getStructuringElement(MORPH_RECT, Size(5, 5));
	dilate(mask, mask, kernel);

	//使用inpaint进行图像修复
	Mat result;
	inpaint(src, mask, result, 1, INPAINT_NS);

	//imshow("mask", mask);
	imshow("test", result);
    imwrite("D:\\Project\\OpenCV\\DADMP1.png", result);
	waitKey(0);
	return 0;
}

三、效果

去除了豆包AI

相关推荐
Habibei13 分钟前
DeepSeek-R1-671B大模型满血版私有化部署高可用教程-SparkAi系统集成图文教程
人工智能·deepseek·deepseek-r1
喜-喜23 分钟前
机器学习破局指南:零基础6个月系统训练计划
人工智能·机器学习
青松@FasterAI31 分钟前
【Arxiv 大模型最新进展】北大 Parenting 方法登场:参数魔法解锁检索增强语言模型新高度!
人工智能·语言模型·自然语言处理
admin皮卡34 分钟前
2.4 自动化评测答疑机器人的表现-大模型ACP模拟题-真题
前端·人工智能·机器学习
Donvink1 小时前
【AIGC系列】3:Stable Diffusion模型介绍
人工智能·深度学习·语言模型·stable diffusion·aigc·transformer
赛逸展张胜1 小时前
AI赋能智能家居,CES Asia 2025论坛深度探讨行业未来
人工智能·科技
起个破名想半天了2 小时前
计算机视觉(opencv-python)入门之常见图像处理基本操作(待补充)
python·opencv·计算机视觉·图像处理基本操作
shelly聊AI2 小时前
GPT-5倒计时:2025年AI海啸来袭,机器与人类对话临近
人工智能·gpt·openai
FE802 小时前
opencv边缘检测
人工智能·opencv·计算机视觉
小小打工人2222 小时前
敏捷开发实践指南:从理论到落地的全面解析
人工智能·信息可视化·emacs