opencv图像基础学习

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()
  1. def passImg()::定义一个名为 passImg 的函数。
    • 使用 plt.figureplt.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):生成一个与图像大小相同(hw 列)的随机矩阵作为密钥,元素范围在 0255 之间,数据类型为 uint8
    • h, w = img.shape:获取图像的高度 h 和宽度 w
    • img = cv2.imread('./image/cat.jpg', 0):以灰度模式(0 表示)读取图像 ./image/cat.jpg 并存储在 img 中。
相关推荐
三月七(爱看动漫的程序员)3 分钟前
LARGE LANGUAGE MODELS ARE HUMAN-LEVEL PROMPT ENGINEERS
大数据·人工智能·算法·语言模型·自然语言处理·prompt
cnbestec4 分钟前
Kinova仿生机械臂Gen3搭载BOTA 力矩传感器SeneOne:彰显机器人触觉 AI 与六维力传感的融合力量
人工智能·机器人
沙漏AI机器人8 分钟前
【20250115】Nature子刊:柔性生物传感与深度学习结合的上肢运动增强外骨骼机器人...
人工智能·深度学习·机器人
吕小明么9 分钟前
腾讯AI Lab与上交大探索模型“过度”思考
人工智能·神经网络·算法·aigc·agi
Ai智享25 分钟前
3d系统误差分析
数码相机·计算机视觉·3d
Ai智享30 分钟前
高反光表面三维视觉测量方法
计算机视觉
Logrus IT42 分钟前
俄语画外音的特点
人工智能·语音识别
浊酒南街1 小时前
SVM模型(理论知识2)
人工智能·机器学习·支持向量机
Fuweizn1 小时前
案例|富唯智能复合机器人CNC柔性上下料
人工智能·机器人·自动化
KeyPan1 小时前
【机器学习:三十三(二)、支持向量机(SVM)的核函数:概念、类型与应用】
人工智能·神经网络·算法·机器学习·支持向量机·数据挖掘