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

关于视频去水印的一点尝试

一. 视频去水印的几种方法

1. 使用ffmpeg delogo滤镜

delogo 滤镜的原理是通过插值算法,用水印周围的像素填充水印的位置。

示例:

ffmpeg -i input.mp4 -filter_complex "[0:v]delogo=x=420:y=920:w=1070:h=60" output.mp4

该命令表示通过滤镜去除水印,水印的位置为(x,y),尺寸为wxh。

效果如下:

这种方式从原理上来讲是存在问题的,可以保证画面整体颜色看起来差不多,但是局部看画面是不连续的。对于水印周围是纯色的情况,这种方式是没有问题的。

适用场景:水印位置为纯色,或者颜色变化不明显的情况。

2. AI 去水印

尝试了可以搜索到的几种AI软件:

(1)有的使用的是ffmpeg delogo类似的方案;

(2)有的使用对象识别的方式,理论上来说,这种方式是可行的。但是也有一些问题,首先图像识别运算量大,耗时特别长。如果是单张图片还可以,对于视频耗时太长了。

3. 同系列图片替换

这是自己尝试的一种方式,算是抛砖引玉吧。原理也很简单,一般视频就是连续变化的图片,只要找到两张图片水印区域不重叠,就可以进行替换。

原图1

原图2

原图1相对于原图2的偏转,这是对原图1 进行旋转后的效果。

提取水印位置,可以看到原图1和原图2,在水印处是没有重叠的。

用从原图2中提取的水印位置的图片,替换原图1 中的水印位置。可以看到图像是连续的,除了图像的清晰度有些区别。这是因为原图1和原图2 水印位置的图片是不一样导致的。

下面是替换后的视频:

视频去水印-CSDN直播

这种方法的适用场景:

1. 在水印区域是相同的或者变化很小

2. 水印区域在不同图片存在不重叠的情况。

上面是我的一点尝试,了解的东西有限,欢迎大家交流。

相关文章:

关于视频去水印的一点尝试

一. 视频去水印的几种方法 1. 使用ffmpeg delogo滤镜 delogo 滤镜的原理是通过插值算法,用水印周围的像素填充水印的位置。 示例: ffmpeg -i input.mp4 -filter_complex "[0:v]delogox420:y920:w1070:h60" output.mp4 该命令表示通过滤镜…...

maven-antrun-plugin插件的用法

maven-antrun-plugin 是 Maven 中一个非常强大的插件,它允许你在 Maven 构建过程中运行 Apache Ant 任务。通过这个插件,你可以在 Maven 构建的各个阶段(如 compile、package 等)中执行自定义的 Ant 任务,比如复制文件…...

twisted实现MMORPG 游戏数据库操作封装设计与实现

在设计 MMORPG(大规模多人在线角色扮演游戏)时,数据库系统是游戏架构中至关重要的一部分。数据库不仅承担了游戏中各种数据(如玩家数据、物品数据、游戏世界状态等)的存储和管理任务,还必须高效地支持并发访…...

Java知识速记:Exception与Error的区别

Java知识速记:Exception与Error的区别 在Java编程中,异常处理是一个重要的概念。程序员需要了解如何有效识别和处理不同类型的错误,以提升程序的健壮性和可维护性。 什么是异常(Exception)? 异常是程序在运…...

CTF-web:java-h2 堆叠注入rce -- N1ctf Junior EasyDB

代码存在sql注入 // 处理登录表单的POST请求PostMapping({"/login"})public String handleLogin(RequestParam String username, RequestParam String password, HttpSession session, Model model) throws SQLException {// 验证用户凭据if (this.userService.valid…...

GDB 使用心得

一、 入门篇 理解 GDB 的作用: GDB 是 GNU 调试器的缩写&#xff0c;用于调试 C、C 等编程语言的程序。它可以帮助你&#xff1a; 跟踪程序执行流程设置断点&#xff0c;暂停程序执行查看和修改变量值分析程序崩溃原因 掌握基本命令: 启动 GDB: gdb <可执行文件>运行程序…...

电脑端调用摄像头拍照:从基础到实现

文章目录 1. 了解navigator.mediaDevices.getUserMedia API2. 创建 HTML 结构3. 编写 JavaScript 代码3.1 打开摄像头3.2 拍照 4. 完整代码5. 测试6. 注意事项及部署 在现代 Web 开发中&#xff0c;调用摄像头进行拍照是一个常见的功能&#xff0c;尤其是在需要用户上传头像、进…...

部署 DeepSeek R1各个版本所需硬件配置清单

DeepSeek-R1 通过其卓越的推理性能和灵活的训练机制&#xff0c;在 2025 年的春节期间受到了广泛关注。 DeepSeek-R1 是一款高性能的 AI 推理模型&#xff0c;主要通过强化学习技术来增强模型在复杂任务场景下的推理能力。 在本地部署 DeepSeek-R1 时&#xff0c;尤其是完整的…...

Java面试题——事务

65. Spring事务的实现方式和实现原理 Spring事务的本质其实就是数据库对事务的支持&#xff0c;没有数据库的事务支持&#xff0c;Spring是无法提供事务功能的。Spring事务实现主要有两种方法:编程式:beginTransaction()、commit()、rollback()等事务管理相关的方法&#xff0…...

算法18(力扣136)只出现一次的数字

1、问题 给你一个 非空 整数数组 nums&#xff0c;除了某个元素只出现一次以外&#xff0c;其余每个元素均出现两次。找出那个只出现了一次的元素。 你必须设计并实现线性时间复杂度的算法来解决此问题&#xff0c;且该算法只使用常量额外空间。 2、示例 &#xff08;1&…...

SiliconCloud 支持deepseek,送2000w token

SiliconCloud SiliconCloud 邀请奖励持续进行&#xff0c;2000 万 Tokens 送不停&#xff01; 邀请好友赚 2000 万 Tokens&#xff1a;每成功邀请一位新用户通过手机号码注册&#xff0c;您将获得 2000 万 Tokens&#xff1b;注册即送 2000 万 Tokens&#xff1a;受邀好友作为…...

在nodejs中使用RabbitMQ(六)sharding消息分片

RabbitMQ 的分片插件&#xff08;rabbitmq_sharding&#xff09;允许将消息分布到多个队列中&#xff0c;这在消息量很大或处理速度要求高的情况下非常有用。分片功能通过将消息拆分到多个队列中来平衡负载&#xff0c;从而提升消息处理的吞吐量和可靠性。它能够在多个队列之间…...

STM32 I2C通信协议说明

目录 背景 I2C协议 数据的有效性 I2C通信开始和停止条件 I2C数据传输 发送 响应 正常情况&#xff1a; 异常情况&#xff1a; 主机结束接收 写寄存器的标准流程 读寄存器的标准流程 仲裁机制 时钟同步 SDA线的仲裁 程序 背景 对单片机的三大通信中的I2C通信进…...

git bash在github的库中上传或更新本地文件

一、将本地文件上传到 GitHub 仓库 1. 创建 GitHub 仓库 如果你还没有在 GitHub 上创建仓库&#xff0c;首先需要创建一个新的仓库&#xff1a; 登录到 GitHub。点击右上角的 按钮&#xff0c;选择 New repository。给你的仓库起个名字&#xff0c;并选择 Public 或 Privat…...

Keysight E5071C (Agilent) 网络分析仪的特性和规格

安捷伦E5071C网络分析仪 Keysight E5071C网络分析仪 Keysight E5071C (Agilent) 网络分析仪的其他特性和规格包括&#xff1a; 宽动态范围&#xff1a;测试端口动态范围 > 123 dB&#xff08;典型值&#xff09; 快速测量速度&#xff1a;41 ms 全 2 端口校准&#xff0c;…...

总结:如何在SpringBoot中使用https协议以及自签证书?

总结&#xff1a;如何在SpringBoot中使用https协议以及自签证书&#xff1f; 前提一&#xff1a;什么是http协议&#xff1f;前提二&#xff1a;什么是https协议&#xff1f;一生成自签证书二 将证书转换为PKCS12格式三 配置SpringBoot&#xff08;1&#xff09;修改配置文件&a…...

Golang学习历程【第七篇 闭包type defer panic recover了解time包】

Golang学习历程【第七篇 闭包&type defer panic recover了解】 1. 闭包1.1 闭包的定义1.2 闭包的特点1.3 闭包的示例 2. 类型(type)2.1 自定义类型2.2 类型示例 3. 延迟执行&#xff08;Defer&#xff09;3.1 defer 的用法3.2 defer 示例 4. 恐慌&#xff08;Panic&#xf…...

基于SSM+uniapp的数学辅导小程序+LW示例参考

1.项目介绍 系统角色&#xff1a;管理员、普通用户功能模块&#xff1a;用户管理、学习中心、知识分类管理、学习周报管理、口算练习管理、试题管理、考试管理、错题本等技术选型&#xff1a;SSM&#xff0c;Vue&#xff08;后端管理web&#xff09;&#xff0c;uniapp等测试环…...

利用AI智能体创建云端文档知识库并集成第三方数据源(上)

许多开发者在管理和集成多种云端的数据源时经常面对各种各样的困难&#xff0c;所以希望能够构建一个聊天机器人来协调这些数据源&#xff0c;针对业务问题并提供全面的答案。本文介绍了一种解决方案&#xff0c;帮助大家开发一个能够从文档和数据库中回答查询的聊天机器人&…...

聚铭网络入围2025年度江苏省政府采购信息安全设备协议供货名单

近日&#xff0c;2025年度江苏省党政机关、事业单位及团体组织信息安全设备框架协议采购项目入围结果公布。聚铭网络凭借自身专业实力和技术优势脱颖而出&#xff0c;成功入围22个分包。 此次采购项目是江苏省政府采购领域级别最高、覆盖面最广的项目之一。从资格评选到后期材料…...

vue+springboot+webtrc+websocket实现双人音视频通话会议

前言 最近一些时间我有研究&#xff0c;如何实现一个视频会议功能&#xff0c;但是找了好多资料都不太理想&#xff0c;最终参考了一个文章 WebRTC实现双端音视频聊天&#xff08;Vue3 SpringBoot&#xff09; 只不过&#xff0c;它的实现效果里面只会播放本地的mp4视频文件&…...

2025年单片机毕业设计选题物联网计算机电气电子通信类

当然&#xff0c;以下是基于物联网技术设计的20个单片机类题目&#xff0c;旨在考察学生在物联网环境下单片机应用、系统设计、数据传输与处理等方面的能力&#xff1a; 基于物联网的智能家居温度湿度控制系统设计&#xff1a;利用单片机和传感器实现室内环境的温湿度监测&…...

堡垒机调用xshell 无反应

安装sso_client 确认db_path.ini xhsell路径 如图调整为本机安装的路径即可。 实战问题&#xff1a; 操作完成之后 Chrome还是无法调用&#xff0c;使用360浏览器没问题。...

python后端调用Deep Seek API

python后端调用Deep Seek API 需要依次下载 ●Ollama ●Deepseek R1 LLM模型 ●嵌入模型nomic-embed-text / bge-m3 ●AnythingLLM 参考教程&#xff1a; Deepseek R1打造本地化RAG知识库:安装部署使用详细教程 手把手教你&#xff1a;deepseek R1基于 AnythingLLM API 调用本地…...

Easy系列PLC 线性变换功能块(模拟量相关功能块汇总)

线性转换函数S_RTR 线性转换函数S_RTR(SCL和ST代码)_线性函数的scl语言如何编写-CSDN博客文章浏览阅读440次。博客介绍了线性转换函数S_RTR,包括其在PLC中的应用,如何与工艺PID组合使用,以及在张力开环控制中的具体实践。还提到了函数的C99兼容性,并提供了S_RTR的功能块源…...

【VB语言】EXCEL中VB宏的应用

【VB语言】EXCEL中VB宏的应用 文章目录 [TOC](文章目录) 前言一、EXCEL-VB1.实验过程2.代码 二、EXCEL-VB 生成.c.h文件1.实验过程2.代码 四、参考资料总结 前言 1.WPS-VB扩展包 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、EXCEL-VB 1.实验过…...

【人工智能】如何选择合适的大语言模型,是能否提高工作效率的关键!!!

DeepSeek R1入门指南 导读一、提示语差异1.1 指令侧重点不同1.2 语言风格差异1.3 知识运用引导不同 二、挑选原则2.1 模型选择2.2 提示语设计2.3 避免误区 结语 导读 大家好&#xff0c;很高兴又和大家见面啦&#xff01;&#xff01;&#xff01; 在前面的内容中&#xff0c…...

Unity使用反射进行Protobuf(CS/SC)协议,json格式

protobuf生成的协议,有挺多协议的.利用反射生成dto进行伪协议的响应 和 发送请求 应用场景: 请求(CS)_后端先写完了,前端还搞完时,可使用此请求,可自测 响应(SC)_可自行构建一个响应,对数据进行测试 // 请求 使用物品 CS message ReqUseItem{optional Opcodes MessageID1[def…...

初学 mybatis

前言 回顾之前 不使用 mybatis 框架&#xff0c;我们是怎么通过Java 操作数据库的 "jdbc" 前提&#xff1a;使用maven 构建的项目 1 添加 关于jdbc 的依赖&#xff0c;以及辅助操作数据库的 commons-dubli jar包 截取 前后端项目 2 添加配置文件里面内容有&…...

java.lang.IllegalArgumentException: 在请求目标中找到无效字符。有效字符在RFC 7230和RFC 3986中定义

Tomcat 屏蔽错误信息。java.lang.IllegalArgumentException: 在请求目标中找到无效字符。有效字符在RFC 7230和RFC 3986中定义 <h1>HTTP状态 400 - 错误的请求</h1><hr class"line" /><p><b>类型</b> 异常报告</p><p&…...