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 中。
相关推荐
Raink老师4 分钟前
【AI面试临阵磨枪-60】微服务下 AI 能力如何封装、网关、限流、监控
人工智能·微服务·面试
ApiHug11 分钟前
Mintlify、Stainless & ApiHug 在AI 时代的战略意义
人工智能
九皇叔叔13 分钟前
Spring-Ai-Alibaba [04] 04-llm-platform-custom-demo
java·人工智能·spring
ai生成式引擎优化技术13 分钟前
DLOS Kernel v0.5:从多Agent系统到AI操作系统内核的拐点
人工智能
CHEN5_0217 分钟前
深入理解 RAG(检索增强生成):核心流程、技术选型与进阶实战
人工智能·rag
@蔓蔓喜欢你18 分钟前
团队协作工具:提升开发效率的利器
人工智能·ai
T.i.s26 分钟前
parall scan(并行扫描)通俗理解
人工智能·深度学习
珠海西格电力28 分钟前
零碳园区的碳排放指标计算的实操步骤
大数据·运维·人工智能·物联网·能源
云和数据.ChenGuang39 分钟前
基于鲲鹏 HPC 的 AI 对话机器人架构设计与技术实现
人工智能·数据分析·机器人·pandas·数据预处理·数据训练
weixin_5118404741 分钟前
2026年5月4日 OCS技术方案路线选择与优劣深度调研报告
网络·人工智能