所以我正在使用图像的像素数据,对它应用了一些计算,这给了我一个结果数组,其形状是未知的,直到完成计算。 我无法将输出的数组重新整形为二维或三维数组
这是一个例子
from PIL import Image
img = Image.open('C:\Users\Amit\Desktop\sample_pic.jpeg').convert("RGB")
pixels =np.array(img)
print(pixels.shape) # (477L, 887L, 3L) PIL seems to switch height and width because original dimensions are 877 x 477
flat = pixels.flatten()
print (flat.shape) # (1269297L,)
filter1= np.array([1,1,0])
pixels2 = np.array([])
for i in range(0, len(flat),2):
pixels2 =np.append(pixels2,np.sum((flat[i:i+3] * filter1)))
最后的循环只是对扁平化数组进行一些计算,并输出一个新的数组,其形状我不知道直到输出
print pixels2.shape
#(634649L,)
所以我试图将输出的数组重新塑造成适合图片的尺寸。 我尝试了代码
pixels2.reshape(800,-1)
但是我收到了错误
pixels2.reshape(800,-1)
ValueError: total size of new array must be unchanged
与
相同 pixels.reshape(800,-1,3)
ValueError: total size of new array must be unchanged
我希望添加(-1)会自动找到合适的第二维,但似乎并非如此。我没有将数字800作为其中一个尺寸,但我正在寻找前三个尺寸超过300(300 +,300 +,3)
感谢。
更新
向pixels2
数组添加一个元素,使其成为一个可被3整除的(634650L)数组(我通过反复试验找到它)
但是,找到其他两个维度也会涉及大量的反复试验。 (800,-1,3)不起作用。