我有一个 Pygame 黑色显示器,我将在其上绘制一个白色字母,如下图所示。显示尺寸可以是 100x100 像素以上的任何尺寸。
我知道我可以使用类似的方法来获取表面二维数组:
miSuface = pygame.display.get_surface()
miCoso = pygame.surfarray.array2d(miSuface)
但是,我想以某种方式将此数组转换为 7x5 位矩阵,其中 0 对应黑色像素,1 对应白色像素。我的最终目的是使用该矩阵来训练神经网络并创建一个简单的 OCR。我有什么办法可以实现这个目标吗?或者有更好的方法来获得 7x5 矩阵吗?
最佳答案
我不知道有什么方法可以立即将 array2d 压缩为较小的数组或具有 1 位颜色信息的数组。但是,您可以执行以下操作:
- 迭代数组。如果颜色小于或等于888888,请将其更改为000000。如果大于或等于888888,请将其更改为FFFFFF。
- 创建一个新的 [7][5] 数组。
- 再次迭代。将数组中任意给定第 35 个像素中每个像素的值(黑色 = 0,白色 = 1)相加。样本大小将完全取决于原始 array2d 的大小。如果该 block 的平均值大于或等于 17.5,则向矩阵添加一个白色元素。如果它小于 17.5,请在矩阵中添加一个黑色元素。
关于python - 将 PyGame 黑白显示转换为 7x5 位矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26621138/