# -*- coding: utf-8 -*-
"""
Created on Wed Sep 29 08:48:17 2021
@author: Administrator
"""
import numpy as np
import cv2
#图像掩模
image = cv2.imread('C://Users//Administrator//Desktop//20190317151231154.jpg') #读图
cv2.imshow("Oringinal", image) #显示原图
print(image.shape[:2])
site = np.array([[[500,300],[250,300],[250,5],[500,5]]],dtype=np.int32)
im = np.zeros(image.shape[:2],dtype='uint8')
cv2.polylines(im, site, 1, 255)
cv2.fillPoly(im, site, 255)
mask = im
cv2.namedWindow('Mask',cv2.WINDOW_NORMAL)
cv2.imshow("Mask",mask)
masked = cv2.bitwise_and(image,image,mask=mask)
cv2.namedWindow('Mask to Image',cv2.WINDOW_NORMAL)
cv2.imshow("Mask to Image",masked)
cv2.waitKey(0)
#加密解密
#第一张是明文,第二张是密匙,第三张是密文,第四张是解密后的明文
#于是,当我们想与他人发送带有私密信息的图片时,可以事先约定一张密匙,双方可以通过密文通信
#以此保证信息不会被第三方获取,另外,
#由于要保证双方的密文与密匙大小一致,所以一般可以通过手机的拍照保证密文与密匙大小一致
mingwen = cv2.imread("C://Users//Administrator//Desktop//20190317151231154.jpg") #明文
cv2.imshow("mingwen",mingwen)
row , column, dimension = mingwen.shape
miyao = np.random.randint(0,255,(row,column,dimension),dtype= np.uint8)#密匙
print(miyao)
cv2.imshow("miyao",miyao)
miwen = cv2.bitwise_xor(mingwen,miyao) #密文,bitwise_xor按位异或
print(miwen)
cv2.imshow("miwen",miwen)
mingwen_1 = cv2.bitwise_xor(miyao,miwen)#解密明文
cv2.imshow("jiemizhihou_mingwen",mingwen)
cv2.waitKey()
cv2.destroyAllWindows()
#位平面分解
demo = cv2.imread("C://Users//Administrator//Desktop//20190317151231154.jpg", 0)
cv2.imshow("demo", demo)
r, c = demo.shape # 图像预处理
x = np.zeros((r, c, 8), dtype=np.uint8) # 构造提取矩阵
for i in range(8):
x[:,:,i] = 2**i
#print(x)
w = np.zeros((r, c, 8), dtype=np.uint8)
#print(r)
for i in range(8):
w[:,:,i] = cv2.bitwise_and(demo, x[:,:,i]) # 提取位平面
mask = w[:,:,i]>0 # 阈值处理
w[mask] = 255
cv2.imshow(str(i), w[:,:,i]) # 显示图片
cv2.waitKey()
cv2.destroyAllWindows()
OpenCV图像掩模,外加加密解密
最新推荐文章于 2023-05-03 18:48:17 发布