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