嵌入过程:将载体图像的第 0 个位平面替换为数字水印信息(一幅二值图像)。 提取过程:将载体图像的最低有效位所构成的第 0 个位平面提取出来,得到数字水印信 息。 登录后复制 import cv2 import numpy as np #读取原始载体图像 lena=cv2.imread("lena.bmp",0) #读取水印图像 watermark=cv2.imread("watermark.bmp",0) #将水印内的255处理为1,以方便嵌入-切换为二值图 w=watermark[:,:]>0 watermark[w]=1 #读取原始载体图像的shape值 r,c=lena.shape #============嵌入过程============ #生成内部值都是254的数组 t254=np.ones((r,c),dtype=np.uint8)*254 #获取lena图像的高7位 lenaH7=cv2.bitwise_and(lena,t254) #将watermark嵌入到lenaH7内 e=cv2.bitwise_or(lenaH7,watermark) #============提取过程============ #生成内部值都是1的数组 t1=np.ones((r,c),dtype=np.uint8) #从载体图像内,提取水印图像 wm=cv2.bitwise_and(e,t1) print(wm) #将水印内的1处理为255以方便显示-切换为二值图 w=wm[:,:]>0 wm[w]=255 #============显示============ cv2.imshow("lena",lena) cv2.imshow("watermark",watermark*255) #当前watermark内最大值为1 cv2.imshow("e",e) cv2.imshow("wm",wm) cv2.waitKey() cv2.destroyAllWindows() 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34. 结果: 原图 需要隐藏的图片 隐藏信息后的图片 原创作者: u_15862653 转载于: https://blog.51cto.com/u_15862653/11315416