【发布时间】:2018-04-27 17:58:35
【问题描述】:
我再次需要原始图像,但它返回的灰度 我的老师一开始就说做colormap,并说它发生在matlab中。所以我也想在python中做类似的任务 这是我的代码看看 请帮忙
加密:
import numpy as np
from PIL import Image
x = Image.open('1.jpg', 'r')
x = x.convert('L')
y = np.asarray(x.getdata(), dtype=np.int).reshape((x.size[1], x.size[0]))#changed image to matrix getdata for matrix value # dtype is int type reshape used to break 1d array into 2d array
y = np.asarray(y, dtype=np.uint8)#if values still in range 0-255!
#print(y)
z = y
w = Image.fromarray(y, mode='L')
w.save('grey_scale.bmp')
for i in range(len(z)):
for j in range(len(z[i])):
a = z[i][j]
p = int(bin(a)[2:])
p = '%08d' % p
p = p[::-1]
z[i][j] = int(p, 2)
#print(z)
C = Image.fromarray(z)
C.save('decryption.bmp')
print("DONE")
解密:
import numpy as np
from PIL import Image
x = Image.open('decryption.bmp', 'r')
y = np.asarray(x.getdata(), dtype=np.int).reshape((x.size[1], x.size[0]))#changed image to matrix getdata for matrix value
#print(y) # dtype is int type reshape used to break 1d array into 2d array
y = np.asarray(y, dtype=np.uint8)#if values still in range 0-255!
#print(y)
z = y
for i in range(len(z)):
for j in range(len(z[i])):
a = z[i][j]
p = int(bin(a)[2:])
p = '%08d' % p
p = p[::-1]
z[i][j] = int(p, 2)
#print(z)
C = Image.fromarray(z)
C.save('Final.bmp')
print("DONE")
【问题讨论】:
-
我不确定您在这里寻找什么。您的行 x = x.convert('L') 会将您的图像转换为灰度。颜色信息丢失了,再多的处理也无法取回它。除非你问的是色调映射?
-
你能不能修改上面给定的代码,让它输入一个 RGB 图像,然后输出为 rgb 图像,但是以灰度进行处理
标签: python arrays matlab numpy