2022年 12月 19日

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

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. 随机打乱像素点进行数字图像加密