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 分钟前
AI转型不是技术问题,是组织问题。
大数据·人工智能·ai
Omics Pro4 分钟前
Agentic AI正在重构整个生物信息学工作流
大数据·数据库·人工智能·机器学习·语言模型·自然语言处理·重构
Rauser Mack7 分钟前
Vibe coding游戏实战:零代码编程五子棋小游戏
人工智能·python·游戏·html·prompt
凡科建站7 分钟前
2026年7月在线考试平台搭建服务商前十有哪些?
大数据·人工智能
FriendshipT21 分钟前
Ultralytics:解读PSABlock模块
人工智能·pytorch·python·深度学习·目标检测
minxihou22 分钟前
TRINITY-Router: 用数据证伪LLM路由假设 - 8模型316题实验报告
人工智能·深度学习·语言模型·智能路由器
大象说30 分钟前
在线AIGC检测的底层逻辑与技术落地误区
人工智能
hhzz36 分钟前
全局实例跟踪(GIT):像人类一样定位目标——VideoCube基准与SiamFC实战全解析
大数据·python·计算机视觉·目标跟踪·数据分析
科技林总3 小时前
EWC/KD/ILR/PL
人工智能
100个铜锣烧9 小时前
高级提示技术:Chain-of-Thought与ReAct——让大模型学会“思考”和“行动”
人工智能·大模型·提示词工程