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 中。
相关推荐
偷吃的耗子2 分钟前
【CNN算法理解】:CNN平移不变性详解:数学原理与实例
人工智能·算法·cnn
勾股导航2 分钟前
OpenCV图像坐标系
人工智能·opencv·计算机视觉
神的泪水3 分钟前
CANN 生态实战:`msprof-performance-analyzer` 如何精准定位 AI 应用性能瓶颈
人工智能
芷栀夏4 分钟前
深度解析 CANN 异构计算架构:基于 ACL API 的算子调用实战
运维·人工智能·开源·cann
威迪斯特4 分钟前
项目解决方案:医药生产车间AI识别建设解决方案
人工智能·ai实时识别·视频实时识别·识别盒子·识别数据分析·项目解决方案
笔画人生4 分钟前
# 探索 CANN 生态:深入解析 `ops-transformer` 项目
人工智能·深度学习·transformer
feasibility.6 分钟前
AI 编程助手进阶指南:从 Claude Code 到 OpenCode 的工程化经验总结
人工智能·经验分享·设计模式·自动化·agi·skills·opencode
程序猿追6 分钟前
深度剖析 CANN ops-nn 算子库:架构设计、演进与代码实现逻辑
人工智能·架构
灰灰勇闯IT9 分钟前
领域制胜——CANN 领域加速库(ascend-transformer-boost)的场景化优化
人工智能·深度学习·transformer
灰灰勇闯IT10 分钟前
从零到一——CANN 社区与 cann-recipes-infer 实践样例的启示
人工智能