计算尺寸不均匀的图像的索引

时间:2019-06-09 00:53:44

标签: python

我正在尝试计算循环中尺寸不均匀的几幅图像的清晰度指数。

我做了一个函数(gder),并在循环中使用了它,但是我收到一条错误消息,我怀疑这是由于图像大小不均引起的。

import torch
import torchvision.transforms as transforms
import torchvision.datasets as datasets
import torchvision.models as models
import torch.nn as nn
import torch.optim as optim
import numpy as np
import os
from PIL import Image
import numpy as np

dirname='/home/Data/Images/'
nimages=[]
for name in os.listdir(dirname):
    im=Image.open(os.path.join(dirname,name))
    imarray=np.array(im)
    nimages.append(imarray)

nimages=np.asarray(nimages)

import array
derv=[]

def gder(image):
    gy,gx=np.gradient(image)
    gnorm = np.sqrt(gx**2 + gy**2)
    return np.average(gnorm)

for i in range (0, 5):
    derv[i]=gder(nimages[i])

最后一个循环给我错误 追溯(最近一次通话):   文件“”,第2行,在 IndexError:列表分配索引超出范围

我怀疑问题是图像大小不同。有谁知道如何解决这个问题或提出其他解决方法?

2 个答案:

答案 0 :(得分:2)

问题是derv = []。这样,您将其设置为空列表,然后尝试分配给各种索引,例如索引1。该索引不存在,因为列表的大小为0。您需要调用derv.append(gder(nimages[i]))来添加列表的新值。

答案 1 :(得分:1)

这只是附加问题:

for i in range (0, 5):
    derv.append(gder(nimages[i]))

您的列表为空,因此您不能在其中添加内容而无需使用附加项。