gpt4 book ai didi

python - 如何 reshape 颜色 channel 的 numpy 图像数组

转载 作者:太空宇宙 更新时间:2023-11-03 15:15:35 26 4
gpt4 key购买 nike

我正在使用 Keras 库开发验证码识别项目。对于训练集,我使用以下函数生成最多 5 位验证码。

def genData(n=1000, max_digs=5, width=60):
capgen = ImageCaptcha()
data = []
target = []
for i in range(n):
x = np.random.randint(0, 10 ** max_digs)
img = misc.imread(capgen.generate(str(x)))
img = np.mean(img, axis=2)[:, :width]
data.append(img.flatten())
target.append(x)
return np.array(data), np.array(target)

然后,我尝试 reshape 训练数据数组,如下所示;

train_data = train_data.reshape(train_data.shape[0], 60, 60, 3)

我猜我的验证码有 3 个颜色 channel 。但是,当我尝试 reshape 训练数据时,我面临以下错误;

ValueError: cannot reshape array of size 3600000 into shape (1000,60,60,3)

注意:如果我尝试使用 1 而不是 3。错误不会发生,但我的准确性甚至不接近 %1

最佳答案

您正在通过取平均值来创建单 channel 图像。该错误表明您正在尝试 reshape 一个包含 3600000 个元素的数组,该数组的大小是原来的三倍 (1000*60*60*3 = 10800000)。按照下面的示例调整您的函数以使其正常工作。

此外,由于您将图像的宽度减小到 60 像素,因此目标不再正确。这解释了准确度低的原因。尝试使用更大的宽度,您的准确度很可能会提高(例如 150-155)。

def genData(n=1000, max_digs=5, width=60):
capgen = ImageCaptcha()
data = []
target = []
for i in range(n):
x = np.random.randint(0, 10 ** max_digs)
img = misc.imread(capgen.generate(str(x)))
img = img[:,:width,:]
data.append(img.flatten())
target.append(x)
return np.array(data), np.array(target)

关于python - 如何 reshape 颜色 channel 的 numpy 图像数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43916981/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com