基于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可以看出并没有完美去除水印,这是由水印与背景颜色接近造成的,后面我会用深度学习的方法探索一番。
相关文章:
基于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)# 计算图像的梯…...
Linux下Supervisor的安装与配置
软件工程中,守护进程是非常行之有效的方案。能够让我们的一些指令在崩溃之后可以自我重新启动,从而保障业务上的持续使用。 这里就从0开始教大家安装Supervisor。 一,下载安装 安装有好多种方法,直接下载安装包安装,或者yum安装或者pip安装都可以。这次我们选择的是pip…...
使用Pandas读取Excel文件将特定列转成str格式方法汇总
文章目录 读取Excel文件并确保列为字符串类型使用 dtype 参数使用 converters 参数 读取Excel文件的正确拼写示例:读取Excel文件并过滤包含特定值的行详细解释 读取Excel文件并确保列为字符串类型 正确的方法是使用 pd.read_excel 函数,并指定 dtype 或…...
FPGA CFGBVS 管脚接法
说明 新设计了1个KU040 FPGA板子,回来之后接上JTAG FPGA不识别。做如下检查: 1、电源测试点均正常; 2、查看贴片是否有漏焊,检查无异常,设计上NC的才NC; 3、反复检查JTAG接线是否异常,贴片是…...
快速排序及归并排序的实现与排序的稳定性
目录 快速排序 一. 快速排序递归的实现方法 1. 左右指针法 步骤思路 为什么要让end先走? 2. 挖坑法 步骤思路 3. 前后指针法 步骤思路 二. 快速排序的时间和空间复杂度 1. 时间复杂度 2. 空间复杂度 三. 快速排序的优化方法 1. 三数取中优化 2. 小区…...
【系统架构设计】数据库系统(一)
数据库系统(一) 数据库模式与范式数据库的结构与模式数据模型关系代数数据的规范化反规范化 数据库设计事务管理备份与恢复分布式数据库系统数据仓库数据挖掘NoSQL大数据 数据库模式与范式 数据库的结构与模式 数据库技术中采用分级的方法将数据库的结…...
泛微e-cology WorkflowServiceXml SQL注入漏洞(POC)
漏洞描述: 泛微 e-cology 是泛微公司开发的协同管理应用平台。泛微 e-cology v10.64.1的/services/接口默认对内网暴露,用于服务调用,未经身份认证的攻击者可向 /services/WorkflowServiceXml 接口发送恶意的SOAP请求进行SQL注入,…...
<Rust><GUI>rust语言GUI库tauri体验:前、后端结合创建一个窗口并修改其样式
前言 本文是rust语言下的GUI库:tauri来创建一个窗口的简单演示,主要说明一下,使用tauri这个库如何创建GUI以及如何添加部件、如何编写逻辑、如何修改风格等,所以,这也是一个专栏,将包括tauri库的多个方面。…...
OBD诊断(ISO15031) 09服务
文章目录 功能简介ISO 9141-2、ISO 14230-4和SAE J1850的诊断服务定义1、请求车辆信息请求消息(读取支持的INFOTYPE)2、请求车辆信息响应消息(报告支持INFOTYPE)3、请求车辆信息请求消息(读取INFOTYPE值)4、请求车辆信息响应消息&…...
客户端与服务端之间的通信连接
目录 那什么是Socket? 什么是ServerSocket? 代码展示: 代码解析: 补充: 输入流(InputStream): 输出流(OutputStream): BufferedReader 是如何提高读取效率的&a…...
Font Awesome 图表图标
Font Awesome 图表图标 Font Awesome 是一个广泛使用的图标库,它提供了大量的图标,可以轻松地用于网页设计和开发中。在本文中,我们将重点介绍 Font Awesome 中的图表图标,探讨它们的特点、使用方法,并展示一些实际的…...
React Native 自定义 Hook 获取组件位置和大小
在 React Native 中自定义 Hook useLayout 获取 View、Pressable 等组件的位置和大小的信息 import {useState, useCallback} from react import {LayoutChangeEvent, LayoutRectangle} from react-nativeexport function useLayout() {const [layout, setLayout] useState&l…...
如何在SpringCloud中使用Kafka Streams实现实时数据处理
使用Kafka Streams在Spring Cloud中实现实时数据处理可以帮助我们构建可扩展、高性能的实时数据处理应用。Kafka Streams是一个基于Kafka的流处理库,它可以用来处理流式数据,进行流式计算和转换操作。 下面将介绍如何在Spring Cloud中使用Kafka Streams实…...
InterSystems IRIS使用python pyodbc连接 windows环境,odbc驱动安装,DSN配置,数据源配置
一、创建的数据库和数据 SELECT 1SELECT $ZVERSIONCREATE TABLE MyApp.Person ( ID INT PRIMARY KEY, Name VARCHAR(100) NOT NULL, Age INT, Gender CHAR(1) );CREATE TABLE MyApp.Person2 ( ID INT PRIMARY KEY, Name VARCHAR(100) NOT NULL, Age INT, Gender CHA…...
JVM:运行时数据区
文章目录 一、总览二、程序计数器1、介绍2、程序计数器在运行中会出现内存溢出吗? 三、栈1、介绍2、栈帧的组成部分(1)局部变量表(2)操作数栈(3)帧数据(3)栈内存溢出&…...
spring-boot2.x整合Kafka步骤
1.pom依赖添加 <properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</ma…...
信创学习笔记(四),信创之数据库DB思维导图
创作不易 只因热爱!! 热衷分享,一起成长! “你的鼓励就是我努力付出的动力” 一. 信创学习回顾 1.信创内容 信创内容思维导图 2.信创之CPU芯片架构 信创之CPU芯片架构思维导图 3.信创之操作系统OS 信创之操作系统OS思维导图 二. 信创之国产数据库DB思维导图 …...
SCP 使用教程
SCP(Secure Copy Protocol)是一种通过加密的方式在本地主机和远程主机之间安全地传输文件的协议。它是基于SSH协议的扩展,允许用户在不同主机之间进行文件复制和传输,是Linux和Unix系统中常用的工具之一。本教程将详细介绍SCP的基…...
python自动化之用flask校验接口token(把token作为参数)
用到的库:flask 实现效果: 写一个接口,需要token正确才能登录 代码: # 导包 from flask import Flask,request,jsonify,json # 创建一个服务 appFlask(__name__) # post请求,路径:/query app.route(/query, met…...
旗晟巡检机器人的应用场景有哪些?
巡检机器人作为现代科技的杰出成果,已广泛应用于各个关键场景。从危险的工业现场到至关重要的基础设施,它们的身影无处不在。它们以精准、高效、不知疲倦的特性,担当起保障生产、守护安全的重任,为行业发展注入新的活力。那么&…...
PyTorch实战:从零构建支持向量机进行图像二分类
1. 支持向量机与图像分类的奇妙碰撞 第一次听说要用支持向量机(SVM)做图像分类时,我脑子里立刻浮现出两个问号:这个传统机器学习算法能处理图像数据吗?为什么要用PyTorch实现而不是直接用scikit-learn?直到亲手实现了整个流程&…...
基于Moondream2的工业质检系统:缺陷检测与分类
基于Moondream2的工业质检系统:缺陷检测与分类 1. 为什么传统质检方式正在被重新思考 产线上的质检员每天要盯着成百上千件产品,眼睛酸涩、注意力下降,漏检率悄悄爬升。一台设备表面划痕只有0.1毫米宽,人眼在连续工作两小时后&a…...
SiameseAOE模型多模态扩展探索:结合图像信息的属性抽取
SiameseAOE模型多模态扩展探索:结合图像信息的属性抽取 最近在做一个项目,需要从一堆产品说明书里自动提取技术参数。这些说明书五花八门,有的是纯文本PDF,有的则是图文混排,甚至有些关键参数就印在产品图片的标签上。…...
像素皇城灵蛇贺岁:5分钟部署你的赛博春联生成器(保姆级教程)
像素皇城灵蛇贺岁:5分钟部署你的赛博春联生成器(保姆级教程) 1. 前言:当传统春节遇上赛博美学 春节贴春联是延续千年的传统习俗,但你是否想过用AI技术为这个传统注入新的活力?今天我们要介绍的"像素…...
Java 26 FFM API进阶:零JNI调用TensorRT/OpenVINO,AI端到端延迟砍半
文章目录一、JNI,AI时代的"文言文写作"二、FFM API:Java调用原生代码的"现代白话文"1. Arena:比try-with-resources还狠的内存管理2. Linker:C函数的"Java身份证"3. jextract:头文件自动…...
告别轮询!用STM32F407的USART3+DMA+空闲中断实现高效串口数据接收
STM32F407高效串口通信:USART3DMA空闲中断实战指南 在嵌入式开发中,串口通信是最基础也最常用的外设之一。传统的中断接收方式虽然简单,但在高速或大数据量传输时,频繁的中断响应会显著增加CPU负担,甚至导致数据丢失。…...
Apache Flink Agents 0.2.1版本发布,亮点几何?
Apache Flink社区宣布发布 Apache Flink Agents 0.2 系列的首个缺陷修复版本 0.2.1,包含3项缺陷和漏洞修复及小幅改进,还基于此构建了演示项目。版本发布情况Apache Flink社区很高兴地推出了 Apache Flink Agents 0.2.1 版本。此版本是 0.2 系列的首个缺…...
影刀+即刻:碎片化信息自动归类的联动玩法
影刀与即刻联动实现信息自动归类影刀RPA作为自动化工具,与即刻APP的推送功能结合,可高效管理碎片化信息。以下为具体实现方法:创建即刻机器人 在即刻APP中创建自定义机器人,设置关键词触发规则。例如设置"#工作""#…...
告别SpeedGoat:低成本搭建Simulink Real-Time硬件在环(HIL)平台,基于PC+松下伺服实战
低成本搭建Simulink实时控制平台:基于PC与松下伺服的硬件在环方案 在工业自动化与运动控制领域,实时硬件在环(HIL)测试是验证算法有效性的关键环节。传统方案如SpeedGoat等专用设备虽性能稳定,但动辄数十万的成本让许多…...
最后的GIL堡垒正在崩塌:现在不掌握这6种无锁Python并发安全范式,你的微服务将在Q3大规模core dump
第一章:GIL消亡史与无锁Python并发的必然性Python 的全局解释器锁(GIL)自1991年诞生起,便成为 CPython 解释器中一道不可逾越的并发屏障。它确保同一时刻仅有一个线程执行 Python 字节码,虽简化了内存管理与引用计数实…...
