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 中。
相关推荐
FII工业富联科技服务2 小时前
Omniverse + Isaac Teleop + 合成数据:工业富联机器人大脑训练+执行落地闭环拆解
大数据·人工智能·深度学习·机器学习·机器人·制造·具身智能
东风破_3 小时前
大模型格式化输出
人工智能
Shockang3 小时前
AI 研究偏好模型
人工智能
ZGIAI3 小时前
律师最贵的不是知识,是时间:哪些工作真的可以先交给 Agent?
人工智能·架构
东风破_3 小时前
讲透 SSE:从流式响应到 LangChain model.stream()
人工智能
β添砖java4 小时前
深度学习31注意力机制、注意力分数、使用注意力机制的seq2seq、自注意力
人工智能·深度学习
ZGIAI4 小时前
销售团队最缺的不是另一个 AI,而是有人把跟进这件事一直做下去
人工智能·架构
隔窗听雨眠4 小时前
MCP会成为Agentic AI的标准吗?技术演进、生态博弈与标准之路的深度分析
人工智能
2601_967659884 小时前
2026年多个网页快速提取重点、自动汇总、对比并整理成表格的AI工具清单
人工智能
IT古董4 小时前
AI资讯日报|2026年9月5日:GPT-6 Astra全量推送却遭“翻车“,奥特曼紧急致歉一天12条大新闻:OpenAI翻车、英伟达收购、最狠AI法案出台
人工智能