数字水印的嵌入与提取---OpenCV-Python开发指南(6)

简介: 数字水印的嵌入与提取---OpenCV-Python开发指南(6)

前言


在前面博文讲解位平面分解的时候,我们就提到过可以通过位平面分解的方式给图像添加水印。而数值水印是图片版权用到最多的加密方式。


通过在最低有效位的位平面分解图中隐藏二值图像信息,具有极高的隐蔽性。所以,友情提示各位程序员,不要以为网上的图像可以随便用,现在的加密方式真是让你防不胜防。就算你知道了添加数值谁水印的原理,恐怕也无法找到其哪个是秘密的信息。(尊重版权,不要存在侥幸心理)


数字水印的处理过程


从位平面来看,数字水印的处理过程分为如下几步:


(1)嵌入过程:将载体图像的第0个位平面替换为数字水印信息。


(2)提取过程:将载体图像的最低有效位平面提取出来,得到数字水印信息。


代码实现嵌入与提取数字水印


原理我们都清楚之后,我们可以直接开始编写代码:

import cv2
import numpy as np
img = cv2.imread("4.jpg", 0)
watermark = cv2.imread("watermark.jpg", 0)
#因为水印图像就是让人不易察觉也不影响原图像,所以要将水印非0位全部替换位最小值1
w = watermark[:, :] > 0
watermark[w] = 1
#嵌入水印
r, c = img.shape
#生成元素都是254的数组
img254=np.ones((r,c),dtype=np.uint8)*254
#获取高7位平面
imgH7=cv2.bitwise_and(img,img254)
#将水印嵌入即可
water_img=cv2.bitwise_or(imgH7,watermark)
cv2.imshow("1",img)
cv2.imshow("2",watermark*255)
cv2.imshow("3",water_img)
#生成都是1的数组
img1=np.ones((r,c),dtype=np.uint8)
#提取水印
water_extract=cv2.bitwise_and(water_img,img1)
#将水印里面的1还原成255
w=water_extract[:,:]>0
water_extract[w]=255
cv2.imshow("4",water_extract)
cv2.waitKey()
cv2.destroyAllWindows()


前面我们介绍过,图像的最低位平面就是00000001,而其他7个位平面合并就是11111110,也就是254,所以我们创建了一个全部为254的数组。通过它获取高7个位平面,然后与数字水印图合并即可。


同样的,提取图像中数字水印,我们只需要获取最低有效位平面,然后将其1值,全部换成255,就可以显示出原水印图。


运行之后,显示的效果如下图所示:

相关文章
|
7月前
|
数据采集 存储 XML
深入浅出:基于Python的网络数据爬虫开发指南
【2月更文挑战第23天】 在数字时代,数据已成为新的石油。企业和个人都寻求通过各种手段获取互联网上的宝贵信息。本文将深入探讨网络爬虫的构建与优化,一种自动化工具,用于从网页上抓取并提取大量数据。我们将重点介绍Python语言中的相关库和技术,以及如何高效、合法地收集网络数据。文章不仅为初学者提供入门指导,也为有经验的开发者提供进阶技巧,确保读者能够在遵守网络伦理和法规的前提下,充分利用网络数据资源。
|
4月前
|
机器学习/深度学习 XML 搜索推荐
图像自动化保存工具:Python脚本开发指南
图像自动化保存工具:Python脚本开发指南
|
算法 数据可视化 数据挖掘
知识图谱入门:使用Python创建知识图,分析并训练嵌入模型
本文中我们将解释如何构建KG、分析它以及创建嵌入模型。
560 2
|
数据采集 JavaScript 前端开发
Web爬虫开发指南:使用Python的BeautifulSoup和Requests库
Web爬虫是一种从互联网上获取数据的自动化工具,它可以用于抓取网页内容、提取信息和分析数据。Python提供了一些强大的库,其中BeautifulSoup和Requests是两个常用的工具,用于解析HTML内容和发起HTTP请求。本文将介绍如何使用BeautifulSoup和Requests库构建一个简单而有效的Web爬虫。
|
前端开发 API 数据库
Python网站开发指南:构建现代化、高效的Web应用
在当今数字化时代,网站已成为企业、组织以及个人展示自己的重要窗口。Python作为一种简洁、高效且易于学习的编程语言,被广泛运用于网站开发领域。本文将向您介绍如何使用Python进行网站开发,包括常用的Web框架、关键技术和最佳实践。
|
计算机视觉
实现抖音时光倒流效果---OpenCV-Python开发指南(56)
实现抖音时光倒流效果---OpenCV-Python开发指南(56)
193 1
实现抖音时光倒流效果---OpenCV-Python开发指南(56)
|
数据可视化 IDE 测试技术
Jupyter Notebooks嵌入Excel并使用Python替代VBA宏
Jupyter Notebooks嵌入Excel并使用Python替代VBA宏
679 0
Jupyter Notebooks嵌入Excel并使用Python替代VBA宏
|
计算机视觉
实现抖音慢动作效果---OpenCV-Python开发指南(57)
实现抖音慢动作效果---OpenCV-Python开发指南(57)
245 1
|
机器学习/深度学习 自然语言处理 算法
使用Python和GloVe词嵌入模型提取新闻和文章的文本摘要
使用Python和GloVe词嵌入模型提取新闻和文章的文本摘要
270 0
使用Python和GloVe词嵌入模型提取新闻和文章的文本摘要
|
算法
实现人脸美白算法---OpenCV-Python开发指南(59)
实现人脸美白算法---OpenCV-Python开发指南(59)
661 0
实现人脸美白算法---OpenCV-Python开发指南(59)