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
中。
- 使用