目前我有以下问题:我得到一个图像数据数组(一个很大的向量)。我既不知道图像的大小,只知道大小(2^n*2^m)
的公式,也不知道图像的编码( jpeg,j2k,有损12位jpeg或类似的)。我知道一个数组的编码是这样的:
[-1000, -888, -884, -883, -884, -886,...-850, -852, -854, -854]
在这里,我可以简单地将它重塑为我想要的形式(在本例中是长度的平方根),然后将其转换为我可以查看的图像
pixel_values = numpy.asarray(pixel_values).reshape(512, 512)
pl2 = pylab.imshow(pixel_values, cmap=pylab.cm.bone
但是现在我有了另一个数组:
[65534, 57344, 4, 0, 0, 0, 65534, 57344, 7652, 1, 20479, 20991, 10496, 0,...35286, 23076, 34407, 36383, 56252, 65370, 217]
这里我不能使用平方根或类似的东西(我知道图像总是像(2^n*2^m)
,我不知道如何将这些数据转换成我可以查看的真实图像。如何在python中找到这些数据的编码和大小?
发布于 2015-03-15 13:21:02
(2^n, 2^m)
兼容的图像大小,将numpy导入为np vect_len = len(pixel_values) min_size = 256 #例如,对于维度之一可接受的最小尺寸npm = np.log2(vect_len) #如果不是npm %1,这是n+m:# n+m是范围(1,npm )中n的整数:p=npm-n if 2**n < min_size或2**p < min_size: continue print(n,p) # (256,2048) # (512,1024) # (1024,512) # (2048,256)
然后,对于每种可能的图像大小,我们调整pixel_values
数组的形状并绘制结果,直到它看起来正确为止。
https://stackoverflow.com/questions/29060652
复制相似问题