当前位置: 首页 > news >正文

基于python的图像去水印

1 代码

import cv2
import numpy as npdef remove_watermark(image_path, output_path):# 读取图片image = cv2.imread(image_path)# 转换为灰度图gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 使用中值滤波去除噪声median_filtered = cv2.medianBlur(gray, 5)# 计算图像的梯度laplacian = cv2.Laplacian(median_filtered, cv2.CV_64F)# 将梯度图像转换为8位无符号整数laplacian_8u = np.uint8(np.absolute(laplacian))# 使用阈值操作找到潜在的水印区域_, thresholded = cv2.threshold(laplacian_8u, 30, 255, cv2.THRESH_BINARY)# 对阈值图像进行形态学操作,填充孔洞并平滑边缘kernel = np.ones((3, 3), np.uint8)closing = cv2.morphologyEx(thresholded, cv2.MORPH_CLOSE, kernel, iterations=2)# 创建一个掩码,将潜在的水印区域设置为白色mask = np.zeros_like(image)mask[closing == 255] = [255, 255, 255]# 将掩码转换为单通道图像mask_gray = cv2.cvtColor(mask, cv2.COLOR_BGR2GRAY)# 使用掩码去除水印result = cv2.inpaint(image, mask_gray, 3, cv2.INPAINT_TELEA)# 保存去水印后的图片cv2.imwrite(output_path, result)remove_watermark('input.jpg', 'output.jpg')

2 去水印效果

图2-1 去水印前后对比

        从图2-1可以看出并没有完美去除水印,这是由水印与背景颜色接近造成的,后面我会用深度学习的方法探索一番。

http://www.lryc.cn/news/401652.html

相关文章:

  • Linux下Supervisor的安装与配置
  • 使用Pandas读取Excel文件将特定列转成str格式方法汇总
  • FPGA CFGBVS 管脚接法
  • 快速排序及归并排序的实现与排序的稳定性
  • 【系统架构设计】数据库系统(一)
  • 泛微e-cology WorkflowServiceXml SQL注入漏洞(POC)
  • <Rust><GUI>rust语言GUI库tauri体验:前、后端结合创建一个窗口并修改其样式
  • OBD诊断(ISO15031) 09服务
  • 客户端与服务端之间的通信连接
  • Font Awesome 图表图标
  • React Native 自定义 Hook 获取组件位置和大小
  • 如何在SpringCloud中使用Kafka Streams实现实时数据处理
  • InterSystems IRIS使用python pyodbc连接 windows环境,odbc驱动安装,DSN配置,数据源配置
  • JVM:运行时数据区
  • spring-boot2.x整合Kafka步骤
  • 信创学习笔记(四),信创之数据库DB思维导图
  • SCP 使用教程
  • python自动化之用flask校验接口token(把token作为参数)
  • 旗晟巡检机器人的应用场景有哪些?
  • vue2迁移到vue3注意点
  • 使用windows批量解压和布局ImageNet ISLVRC2012数据集
  • css实现每个小盒子占32%,超出就换行
  • C++的链接指示extern “C“
  • 私域运营 组织架构
  • Netty HTTP
  • 什么是边缘计算技术和边缘计算平台?
  • 自然语言处理(NLP)——法国工程师IMT联盟 期末考试题
  • Linux内核编译安装 - Deepin,Debian系
  • 安全防御,防火墙配置NAT转换智能选举综合实验
  • 追溯源码观察HashMap底层原理