OpenCV如何利用对比度亮度变换实现水印去除
发表于:2023-03-26 作者:安全数据网编辑
编辑最后更新 2023年03月26日,OpenCV如何利用对比度亮度变换实现水印去除,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。导读主要介绍使用OpenCV亮度/对比度
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 cv2import numpy as npimg = cv2.imread("mark.jpg")alpha = 2.0beta = -165result= alpha * img + betaresult= np.clip(result, 0, 255).astype(np.uint8)cv2.imwrite("result.png", result)
C++ OpenCV实现代码:
#include#include 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如何利用对比度亮度变换实现水印去除问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。
c语言网络技术和编程语言总结
c语言对应的三级考试网络技术
网站服务器后台如何加防护密码
c语言软件开发步骤
c语言中网络技术知识点
服务器对权限提升的防护措施
怎么在阿里云租服务器
黑苹果能做web服务器吗
c语言和网络技术哪个好考
云服务器2核4G是什么性能
用云服务器安全
软件开发属于制造业吗
医疗软件开发定制
Erp内置软件开发平台
软件开发公司的贷款申请书
淘宝数据库怎么才能不卡
衡水市网络安全审查通知
查看数据库alert日志
网络安全体系认证平台
成都mt4外汇软件开发
软件开发可以往哪方面入手
软件开发什么模式好
盈环网络技术上海有限公司重庆
网络安全法指出采取
滴滴出行服务器e2
王者荣耀苍狼末裔服务器
天津星际ipfs服务器云空间
整个数据库中有多少日志文件
中国ctf网络安全大赛
什么是网络服务器配置与管理
专科计算机网络技术校企合作好吗
android数据库报错
简述网络安全系统控制
查询mdb数据库数据并显示结果
盈环网络技术上海有限公司重庆
数据库转换工具完整中文版
w的文档数据库是哪个档
运营商服务器国产化部件测试对象
系统软件开发培训机构
黑魂受死版pc没有服务器了吗