OpenCV利用对比度亮度变换实现水印去除
目录
- 导读
- 背景介绍
- 实现步骤
导读
本文主要介绍使用OpenCV亮度/对比度变换来去除图片水印的实例。
背景介绍
OpenCV中去除水印最常用的方法是inpaint,通过图像修复的方法来去除水印,最终效果也要根据实际图像来看(时好时坏)。有些图像并不适用inpaint方法来去除水印,比如下面的这种包含文本的图像中的水印,即便提供了水印的mask图,修复后也会丢失文字信息,这并不是我们想要的。
那么问题来了,上面图像中的水印该如何去除?有没有一种通用方法,能很好去除这些水印?答案是:没有通用方法,只能具体问题具体分析!
实现步骤
仔细观察上面的图像并分析文本与水印的像素值不难发现,图中文本和水印的灰度值或者RGB值有明显差异:
【1】图案水印RGB值(取样值:239,236,253)
【2】文字水印RGB值(取样值:215,215,215)
【3】文本RGB值(取样值:114,112,125)
接下来对图像做对比度和亮度变换:
result = alpha * src - beta (alpha = 2.0, beta = -165)
提高对比度*2时水印消失,然后降低亮度做补偿:
Python-OpenCV实现代码:
import cv2 import numpy as np img = cv2.imread("mark.jpg") alpha = 2.0 beta = -165 result= alpha * img + beta result= np.clip(result, 0, 255).astype(np.uint8) cv2.imwrite("result.png", result)
C++ OpenCV实现代码:
#include <iostream> #include <opencv2/opencv.hpp> using namespace std; using namespace cv; int main() { Mat src = imread("mark.jpg"); if (src.empty()) { cout << "src img load failed!" << endl; return 1; } imshow("src", src); Mat result = 2.0 * src - 165; imshow("result", result); waitKey(); imwrite("result.png", result); return 0; }
运行结果图:
原图与结果图对比:
以上就是OpenCV利用对比度亮度变换实现水印去除的详细内容,更多关于OpenCV去水印的资料请关注我们其它相关文章!
相关推荐
-
利用Python+OpenCV三步去除水印
一.推理原理 1.标定噪声的特征,使用cv2.inRange二值化标识噪声对图片进行二值化处理,具体代码:cv2.inRange(img, np.array([200, 200, 240]), np.array([255, 255, 255])),把[200, 200, 200]~[255, 255, 255]以外的颜色处理为0 2.使用OpenCV的dilate方法,扩展特征的区域,优化图片处理效果 3.使用inpaint方法,把噪声的mask作为参数,推理并修复图片 二.推理步骤 1.从源图
-
使用OpenCV为图像加水印的教程
目录 1. 什么是水印? 2. 在 OpenCV 中调整图像大小 3.使用图像创建水印 参考 在本文中,我们将学习如何使用 OpenCV 为多个图像添加水印. 1. 什么是水印? 水印是有意叠加在不同图像上的标志.签名.文本或图案,用于保护图像的版权. 其主要目的是宣传品牌,并使未经所有者许可复制或使用原始图像变得更加困难. 组织和专业人士经常使用水印来防止在在线托管内容后被其他人使用他们的内容. 那么,你有没有想过为图像添加水印? 例如,我们写博客会说明外部图像的来源.但是你自己创建的图像呢?
-
python实现图片加文字水印OPenCV和PIL库
目录 一:openCV给图片添加水印 二:使用PIL给图片添加水印 在python中我们可以使用openCV给图片添加水印,这里注意openCV无法添加汉字水印,添加汉字水印上可使用PIL库给图片添加水印 一:openCV给图片添加水印 1:安装openCV pip install opencv-python 2:使用openCV给图片添加水印实例: # -*- coding: utf-8 -*- import cv2 # 载入突破 img = cv2.imread('test.jpg') #
-
Python编程OpenCV和Numpy图像处理库实现图片去水印
目录 OpenCV + Numpy 函数简介 色彩转换 PIL + itertools 大家好,我是小五 前一阵给大家分享了,Python如何给图片加水印.评论区就有小伙伴问,可不可使用Python去除图片水印的方法呢? 这个肯定有啊,不过由于图片水印的种类有很多,今天我们先讲最简单的一种. 即上图中的①类水印,这种水印存在白色背景上的文档里,水印是灰色,需要保留的文字是黑色. 这种通常可以进行简单的亮度/对比度转换,直到水印消失并降低亮度以进行补偿. 参考别人的方法,我发现可以用多种方法去除水
-
OpenCV利用对比度亮度变换实现水印去除
目录 导读 背景介绍 实现步骤 导读 本文主要介绍使用OpenCV亮度/对比度变换来去除图片水印的实例. 背景介绍 OpenCV中去除水印最常用的方法是inpaint,通过图像修复的方法来去除水印,最终效果也要根据实际图像来看(时好时坏).有些图像并不适用inpaint方法来去除水印,比如下面的这种包含文本的图像中的水印,即便提供了水印的mask图,修复后也会丢失文字信息,这并不是我们想要的. 那么问题来了,上面图像中的水印该如何去除?有没有一种通用方法,能很好去除这些水印?答案是:没有通用方法
-
OpenCV利用背景建模检测运动物体
本文实例为大家分享了OpenCV利用背景建模检测运动物体的具体代码,供大家参考,具体内容如下 #include <opencv\highgui.h> #include <stdio.h> int main( int argc, char** argv ){ IplImage* pFrame = NULL; IplImage* pFrImg = NULL; IplImage* pBkImg = NULL; CvMat* pFrameMat = NULL; CvMat* pFrMat
-
基于python的图片修复程序(实现水印去除)
图片修复程序-可用于水印去除 在现实的生活中,我们可能会遇到一些美好的或是珍贵的图片被噪声干扰,比如旧照片的折痕,比如镜头上的灰尘或污渍,更或者是某些我们想为我所用但有讨厌水印,那么有没有一种办法可以消除这些噪声呢? 答案是肯定的,依然是被我们用了无数次的OpenCV这款优秀的框架. OpenCV 目前,OpenCV逐步成为一个通用的基础研究和产品开发平台.OpenCV这一名称包含了Open和 Computer Vision两者的意思.实际上,Open指Open Source(开源,即开放源代码
-
python+openCV利用摄像头实现人员活动检测
本文实例为大家分享了python+openCV利用摄像头实现人员活动检测的具体代码,供大家参考,具体内容如下 1.前言 最近在做个机器人比赛,其中一项要求是让机器人实现对是否有人员活动的检测,所以就先拿PC端写一下,准备移植到机器人的树莓派. 2.工具 工具还是简单的python+视觉模块openCV,代码量也比较少.很简单就可以实现 3.人员检测的原理 从图书馆借了一本<特征提取与图像处理(第二版)>,是Mark S.Nixon和Alberto S.Aguado写的,其中讲了跟多关于检测
-
OpenCV 图像对比度的实践
本文主要介绍了OpenCV 图像对比度,具有一定的参考价值,感兴趣的可以了解一下 实现原理 图像对比度指的是一幅图像中明暗区域最亮的白和最暗的黑之间不同亮度层级的测量,即指一幅图像灰度反差的大小.差异范围越大代表对比越大,差异范围越小代表对比越小.设置一个基准值thresh,当percent大于0时,需要令图像中的颜色对比更强烈,即数值距离thresh越远,则变化越大:当percent等于1时,对比强到极致,只有255和0的区分:当percent等于0时,不变:当percent小于0时,对比下降
-
OpenCV利用高斯模糊实现简单的磨皮美颜效果
目录 1.高斯模糊 1.什么是高斯模糊 2.opencv提供的API 2.双边模糊 1.什么是双边模糊 2.opencv的API 3.磨皮美颜效果的实现 1.实现过程 2.主要代码 3.效果 1.高斯模糊 1.什么是高斯模糊 前面我们就知道了均值模糊和中值模糊,现在我们开始了解高斯模糊. 首先高斯指的是高斯函数,这个我想大家应该都知道,是一种非常常见的概率分布函数.大概就长这样吧. 通过均值模糊类比,我们可以大胆的猜出来高斯模糊的含义: 每一次需要处理的像素矩阵中不同地方的像素的值在最后的赋值像
-
Java OpenCV利用KNN算法实现图像背景移除
目录 实现步骤 示例代码 结果图 实现步骤 1 获取视频 2 设置形态学结构 3 创建 Video.createBackgroundSubtractorKNN() 4 提取模型 BS 5 进行形态学变换 6 膨胀 7 二值化 8 展示结果 示例代码 package com.xu.opencv; import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.Optional
-
Qt+OpenCV利用帧差法实现车辆识别
目录 一.目标 二.使用Qt界面 三.代码实现 一.目标 Qt界面实现 点击 线程启动按钮播放视频 左边界面显示原视频 右边界面显示车辆识别视频 结果展示如下: 初始界面 点击线程启动后,即可车辆识别 二.使用Qt界面 设计好界面后最好先保存 对按钮设置槽函数 三.代码实现 难点在于:线程同步问题 需要使用到connect函数中的第五个参数[第五个参数 具体说明如下] 1 AutoConnection 为默认参数,由发送信号决定,如果发送信号和接受信号是同一个线程,则调用DirectConnec
-
图片自动保存到本地并利用aspjpeg为图片加水印
<% '函数功能:远程图片自动保存到本地服务器,并利用aspjpeg为图片加上水印 '(注意:请先在目录下创建images目录,用来保存临时图片) '本程序需要在服务器上安装"aspjpeg组件"否则无法正常使用 '也可以只取'''''22222222'''''''以上的部分,这部分可以保存图片,第二部分是进行水印增加 '使用方法,请保存为saveimg.asp 'saveimg.asp?url=http://siyizhu.com/logo.gif 即可以取下图片啦,HOHO.
-
Python OpenCV利用笔记本摄像头实现人脸检测
本文实例为大家分享了Python OpenCV利用笔记本摄像头实现人脸检测的具体代码,供大家参考,具体内容如下 1.安装opencv 首先参考其他文章安装pip. 之后以管理员身份运行命令提示符,输入以下代码安装opencv pip install --user opencv-python 可以使用以下代码测试安装是否成功 #导入opencv模块 import cv2 #捕捉帧,笔记本摄像头设置为0即可 capture = cv2.VideoCapture(0) #循环显示帧 while(Tru
随机推荐
- Vue.js系列之项目结构说明(2)
- 如何使Chrome控制台支持多行js模式——意外发现
- Windows下修改Bios,安装惠普 HP OEM XP [图文教程]
- IOS开发之tableView点击行跳转并带有“显示”更多功能
- vue监听scroll的坑的解决方法
- 在C#及.NET框架中使用StringBuilder类操作字符串的技巧
- Python中Django框架下的staticfiles使用简介
- android 支持的语言列表(汇总)
- Yii 连接、修改 MySQL 数据库及phpunit 测试连接
- 配置php网页显示各种语法错误
- 一个经典实用的PHP图像处理类分享
- Shell脚本while、until循环语句简明教程
- linux开机启动nodemanager步骤
- jQuery中页面返回顶部的方法总结
- Android UI效果之绘图篇(一)
- 关于Spring项目对JDBC的支持与基本使用详解
- 深入浅析Vue 中 ref 的使用
- 使用python 写一个静态服务(实战)
- libreoffice python 操作word及excel文档的方法
- C语言文件操作大全