1

嗨,我试着写一个代码,我用 pygame 在屏幕上写一个数字,然后神经网络预测我写的数字。我的问题是我用 (28, 28, 3) 中的图像数组训练了我的神经网络。所以我试图重塑我的 (280, 280, 3) 数组。但是当我这样做时,我的数组是无的。我使用 Python 3.7

string_image = pygame.image.tostring(screen, 'RGB')
temp_surf = pygame.image.fromstring(string_image, (280, 280), 'RGB')
array = pygame.surfarray.array3d(temp_surf)
array = array.resize((28, 28, 3))

任何人都可以帮忙吗?

4

2 回答 2

1

如果您只想缩放 a pygame.Surface,那么我建议使用pygame.transform.scale()or pygame.transform.smoothscale()

例如:

temp_surf = pygame.image.fromstring(string_image, (280, 280), 'RGB')
scaled_surf = pygame.transform.smoothscale(temp_surf, (28, 28))
array = pygame.surfarray.array3d(scaled_surf)
于 2020-06-15T16:11:35.670 回答
0

我不熟悉,pygame但它看起来像pygame.surfarray.array3d返回一个numpy-array。

如果像素小于特定值,如何遍历 pygame 3d surfarray 并更改像素的单个颜色?

要保持相同数量的数据点,只需更改您可以使用的形状numpy.reshape

import numpy as np
c = 28*28*3 # just to start off with right amount of data
a = np.arange(c) # this just creates the initial data you want to format
b = a.reshape((28,28,3)) # this actually reshapes the data
d = b.shape #this just stores the new shape in variable d
print(d) #shows you the new shape

要将数据内插到新的大小,有多种方法,例如 CV 或继续numpy示例。

ary = np.resize(b,(18,18,1))
e = ary.shape
print(e)

希望有帮助。

于 2020-06-15T15:54:21.653 回答