
2.3图像的加密解密
源码如下:
import cv2
import numpy as np
import matplotlib.pyplot as plt
def passImg():img=cv2.imread('./image/cat.jpg',0)h,w=img.shape#生成一个密码,加密key_img=np.random.randint(0,256,size=(h,w),dtype=np.uint8)img_addm=cv2.bitwise_xor(img,key_img)print(key_img.shape,img.shape)#解密img_jm=cv2.bitwise_xor(key_img,img_addm)plt.figure(figsize=(10, 7))plt.subplot(2, 2, 1), plt.title("cat"), plt.imshow(img)plt.subplot(2, 2, 2), plt.title("key"), plt.imshow(key_img)plt.subplot(2, 2, 3), plt.title("addom"), plt.imshow(img_addm)plt.subplot(2, 2, 4), plt.title("jiemi"), plt.imshow(img_jm)plt.show()if __name__ == '__main__':passImg()
def passImg()::定义一个名为passImg的函数。- 使用
plt.figure和plt.subplot以及plt.imshow函数将原始图像、密钥、加密图像和解密图像显示在一个2x2的布局中。 img_jm = cv2.bitwise_xor(key_img, img_addm):使用cv2.bitwise_xor对密钥和加密后的图像进行异或操作,得到解密后的图像img_jm。img_addm = cv2.bitwise_xor(img, key_img):使用cv2.bitwise_xor对图像和密钥进行异或操作,得到加密后的图像img_addm。key_img = np.random.randint(0, 256, size=(h, w), dtype=np.uint8):生成一个与图像大小相同(h行w列)的随机矩阵作为密钥,元素范围在0到255之间,数据类型为uint8。h, w = img.shape:获取图像的高度h和宽度w。img = cv2.imread('./image/cat.jpg', 0):以灰度模式(0表示)读取图像./image/cat.jpg并存储在img中。
- 使用