'''观察灰度图像的各个位平面''' # import cv2 # import numpy as np # a = cv2.imread("D:\\img\\lena.bmp",0) # r,c = a.shape #获取原图像的行列 # x = np.zeros((r,c,8),np.uint8) #构造提取空矩阵 # for i in range(8): # x[:,:,i] = 2**i #构造每一层的提取矩阵 # ri = np.zeros((r,c,8),np.uint8) #结果位平面 # for i in range(8): # ri[:,:,i] = cv2.bitwise_and(x[:,:,i],a) #提取每一层的位平面 # mask = ri[:,:,i] > 0 #转化为二值图像,否则显示不清楚 # ri[mask] = 255 # cv2.imshow(str(i),ri[:,:,i]) # cv2.waitKey() # cv2.destroyAllWindows() # '''模拟数字水印的嵌入与提取过程''' # import cv2 # import numpy as np # img = cv2.imread("D:\\img\\lena.bmp",0) # #嵌入水印过程 # T1 = np.ones(img.shape,np.uint8)*254 #构造提取矩阵 # LSB0 = cv2.bitwise_and(img,T1) #将最低位图像位平面清0 # W = cv2.imread("D:\\img\\watermark.bmp",0) # WT = W.copy() #复制一份图像,防止对原图像产生破坏 # WT[W>0] = 1 #将0-255的图象转化为二值化图像0,1 # WO = cv2.bitwise_or(WT,LSB0) #将水印加入最低位图像位平面清0的图象 # # 提取水印过程 # T2 = np.ones(img.shape,np.uint8) #构造提取矩阵 # EWB = cv2.bitwise_and(T2,WO) #提取最低位为图像即数字水印01二值化图 # EW = EWB.copy() # EW[EWB>0] = 255 # cv2.imshow("original",img) # cv2.imshow("shuiyin",W) # cv2.imshow("jiami",WO) # cv2.imshow("tiqushuiyin",EW) # cv2.waitKey() # cv2.destroyAllWindows() # '''使用ROI构造可视化水印''' # import cv2 # import numpy as np # a = cv2.imread("D:\\img\\lena.bmp",0) # b = cv2.imread("D:\\img\\watermark.bmp",0) # c = b.copy() # c[c>0] = 1 # d = a*c # e = 255-b # f = d+e # cv2.imshow("A",a) # cv2.imshow("b",b) # cv2.imshow("c",c*255) # cv2.imshow("d",d) # cv2.imshow("e",e) # cv2.imshow("f",f) # cv2.waitKey() # cv2.destroyAllWindows() # '''模拟数字水印嵌入和提取过程(加法,add,addweigted函数)''' # import cv2 # a = cv2.imread("D:\\img\\lena.bmp",0) # b = cv2.imread("D:\\img\\watermark.bmp",0) # ib = 255 - b #制作反色图 # add1 = a + b # add2 = cv2.add(a,ib) # add3 = cv2.addWeighted(a,0.7,b,0.3,0) # cv2.imshow("add1",add1) # cv2.imshow("add2",add2) # cv2.imshow("add3",add3) # cv2.imshow("fanse",ib) # cv2.waitKey() # cv2.destroyAllWindows() # '''采用算术运算法实现数字水印''' # import cv2 # import numpy as np # # 定义一个嵌入函数 # def insert(img,watermark): # img = img - img % 2 # watermark = (watermark/255).astype(np.uint8) # iw = img + watermark # cv2.imshow("original",img) # cv2.imshow("insert",iw) # return iw # # 定义一个提取函数 # def extract(iw) : # ew = iw % 2 # ew = ew * 255 # cv2.imshow("extract",ew) # # 主程序 # img = cv2.imread("D:\\img\\lena.bmp",0) # watermark = cv2.imread("D:\\img\\watermark.bmp",0) # iw = insert(img,watermark) #这里用iw接收一下图像,是为了防止下一行代码找不到iw # extract(iw) # cv2.imshow("shuiyin", watermark) # cv2.waitKey() # cv2.destroyAllWindows() # '''按位或运算实现艺术字''' # import cv2 # a = cv2.imread("D:\\img\\lena.bmp",0) # b = cv2.imread("D:\\img\\watermark.bmp",0) # c = cv2.bitwise_or(a,b) # cv2.imshow("yishuzi",c) # cv2.waitKey() # cv2.destroyAllWindows()
07-29
1612
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
07-16
753
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
07-15
893
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
07-17
563
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交