python图像加密_图像加密注释的Python实现,笔记,python

本文介绍了使用Python进行数字图像加密的三种方法:随机打乱图像的行、列以及同时打乱行和列。通过numpy和opencv库,实现了加密和解密过程,并通过matplotlib展示加密和解密后的图像效果。
摘要由CSDN通过智能技术生成

1.随机打乱各行进行数字图像加密

import cv2

import numpy as np

import matplotlib.pyplot as plt

import ch

ch.set_ch()

RGB = cv2.imread(r'D:\DigitPictureProcess\hist02.PNG')

# 返回矩阵的行和列

s = RGB.shape[0]

r = np.random.choice(s, size=s, replace=False, p=None)

RGBS = RGB[r, :, :]

j = 0

f = np.arange(0, len(r))

while j <= len(r):

# find(r==j)是返回r中等于j的值的索引,可以是多个,赋值给f的第j个位置

for (i, val) in enumerate(r):

if val == j:

f[j] = i

j = j + 1

RGBE = RGBS[f, :, :]

plt.subplot(1, 2, 1)

plt.imshow(RGBS)

plt.title(u"加密后")

plt.subplot(1, 2, 2)

plt.imshow(RGBE)

plt.title(u"解密后")

plt.show()

2. 随机打乱各列进行数字图像加密

import cv2

import numpy as np

import matplotlib.pyplot as plt

import ch

ch.set_ch()

RGB = cv2.imread(r'D:\DigitPictureProcess\hist02.PNG')

# 返回矩阵的行和列

s = RGB.shape[1]

r = np.random.choice(s, size=s, replace=False, p=None)

RGBS = RGB[:, r, :]

j = 0

f = np.arange(0, len(r))

while j <= len(r):

# find(r==j)是返回r中等于j的值的索引,可以是多个,赋值给f的第j个位置

for (i, val) in enumerate(r):

if val == j:

f[j] = i

j = j + 1

RGBE = RGBS[:, f, :]

plt.subplot(1, 2, 1)

plt.imshow(RGBS)

plt.title(u"加密后")

plt.subplot(1, 2, 2)

plt.imshow(RGBE)

plt.title(u"解密后")

plt.show()

3.同时打乱各行各列进行数字图像加密

import cv2

import numpy as np

import matplotlib.pyplot as plt

import ch

ch.set_ch()

RGB = cv2.imread(r'D:\DigitPictureProcess\hist02.PNG')

# 返回矩阵的行和列

s_1 = RGB.shape[0]

r = np.random.choice(s_1, size=s_1, replace=False, p=None)

RGBS = RGB[r, :, :]

s_2 = RGB.shape[1]

c = np.random.choice(s_2, size=s_2, replace=False, p=None)

RGBSS = RGBS[:, c, :]

i = 0

f = np.arange(0, len(c))

while i <= len(c):

# find(r==j)是返回r中等于j的值的索引,可以是多个,赋值给f的第j个位置

for (k, val) in enumerate(c):

if val == i:

f[i] = k

i = i + 1

j = 0

g = np.arange(0, len(r))

RGBE = RGBSS[:, f, :]

while j <= len(r):

# find(r==j)是返回r中等于j的值的索引,可以是多个,赋值给f的第j个位置

for (k, val) in enumerate(r):

if val == j:

g[j] = k

j = j + 1

RGBEE = RGBE[g, :, :]

plt.subplot(1, 2, 1)

plt.imshow(RGBSS)

plt.title(u"加密后")

plt.subplot(1, 2, 2)

plt.imshow(RGBEE)

plt.title(u"解密后")

plt.show()

4. 随机打乱像素点进行数字图像加密

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值