Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将pygame中的图像转换为numpy数组或数字?_Python_Numpy_Pygame - Fatal编程技术网

Python 如何将pygame中的图像转换为numpy数组或数字?

Python 如何将pygame中的图像转换为numpy数组或数字?,python,numpy,pygame,Python,Numpy,Pygame,我想知道如何将pygame中的图像转换为数字。我在用蟒蛇下棋。我什么都做了。我首先用绳子做了棋盘: [ ["bR", "bN", "bB", "bQ", "bK", "bB", "bN", "bR"], ["bp", "bp", "bp", &qu

我想知道如何将pygame中的图像转换为数字。我在用蟒蛇下棋。我什么都做了。我首先用绳子做了棋盘:

[
        ["bR", "bN", "bB", "bQ", "bK", "bB", "bN", "bR"],
        ["bp", "bp", "bp", "bp", "bp", "bp", "bp", "bp"],
        ["--", "--", "--", "--", "--", "--", "--", "--"],
        ["--", "--", "--", "--", "--", "--", "--", "--"],
        ["--", "--", "--", "--", "--", "--", "--", "--"],
        ["--", "--", "--", "--", "--", "--", "--", "--"],
        ["wp", "wp", "wp", "wp", "wp", "wp", "wp", "wp"],
        ["wR", "wN", "wB", "wQ", "wK", "wB", "wN", "wR"]]
我在开始阶段就这样做了。我现在正在研究一种国际象棋AI,它可以快速计算,但是如果棋盘和图像以数字形式或numpy数组的形式出现;这将有助于图像的计算速度提高2到3倍

这是我加载图像的方式:

IMAGES = {}
def loadImages():
    pieces = ['wp', 'wR', 'wN', 'wB', 'wK', 'wQ', 'bp', 'bR', 'bN', 'bB', 'bK', 'bQ']
    for piece in pieces:
        IMAGES[piece] = p.transform.scale(p.image.load("images/" + piece + ".png"), (SQ_SIZE, SQ_SIZE))
# Note we can access an image by saying "IMAGES['wp']'
我将图像作为字典加载,这样它们就不会占用更多的cpu,而且更酷。正如您所看到的,图像加载时带有文件名,文件名为字符串

上面的棋盘也是一串。关于我的国际象棋游戏,我正在做的事情是,棋子的任何移动都不需要线板——它只是棋盘的表示,所以我可以在屏幕上显示它。因此,如果我可以改变这个电路板,我所要做的就是改变图像的名称,使其与代码中的图像匹配。例如:一辆黑色的车(现在是:'bR')可以改为01(黑色),车可以是012或其他。但我不知道如何在NumPy或python中实现这一点

我希望人们能帮助我。我可以提供更多的代码或任何您需要理解的见解。告诉我。我真的很感激。

一个简单的方法是使用
返回\u inverse
选项:

查找数组的唯一元素

return\u inverse
bool,可选:如果为True,还返回唯一数组的索引

例如:

导入numpy
董事会=[
[“bR”、“bN”、“bB”、“bQ”、“bK”、“bB”、“bN”、“bR”],
[“bp”、“bp”、“bp”、“bp”、“bp”、“bp”、“bp”、“bp”、“bp”、“bp”],
["--", "--", "--", "--", "--", "--", "--", "--"],
["--", "--", "--", "--", "--", "--", "--", "--"],
["--", "--", "--", "--", "--", "--", "--", "--"],
["--", "--", "--", "--", "--", "--", "--", "--"],
[“可湿性粉剂”、“可湿性粉剂”、“可湿性粉剂”、“可湿性粉剂”、“可湿性粉剂”、“可湿性粉剂”],
[“西铁”、“西铁”、“西铁”、“西铁”、“西铁”、“西铁”、“西铁”、“西铁”、“西铁”]
]
值,索引=numpy.unique(线路板,返回值=真)
索引=索引。重塑((8,8))
打印(值“\n”)
印刷品(索引)
输出:

注意,这些值是按字母顺序排序的。因此,无论棋子在棋盘上的排列方式如何,每块棋子都会得到相同的索引,因为棋盘上至少有一块棋子


如果要定义值,可以使用字典:

查找={
"--": 0,
“wK”:1,“wQ”:2,“wR”:3,“wB”:4,“wN”:5,“wp”:6,
“bK”:7,“bQ”:8,“bR”:9,“bB”:10,“bN”:11,“bp”:12
}
index=numpy.array([[lookup[p]用于行中的p]用于板中的行])
印刷品(索引)
输出:

一种简单的方法是使用
return\u inverse
选项:

查找数组的唯一元素

return\u inverse
bool,可选:如果为True,还返回唯一数组的索引

例如:

导入numpy
董事会=[
[“bR”、“bN”、“bB”、“bQ”、“bK”、“bB”、“bN”、“bR”],
[“bp”、“bp”、“bp”、“bp”、“bp”、“bp”、“bp”、“bp”、“bp”、“bp”],
["--", "--", "--", "--", "--", "--", "--", "--"],
["--", "--", "--", "--", "--", "--", "--", "--"],
["--", "--", "--", "--", "--", "--", "--", "--"],
["--", "--", "--", "--", "--", "--", "--", "--"],
[“可湿性粉剂”、“可湿性粉剂”、“可湿性粉剂”、“可湿性粉剂”、“可湿性粉剂”、“可湿性粉剂”],
[“西铁”、“西铁”、“西铁”、“西铁”、“西铁”、“西铁”、“西铁”、“西铁”、“西铁”]
]
值,索引=numpy.unique(线路板,返回值=真)
索引=索引。重塑((8,8))
打印(值“\n”)
印刷品(索引)
输出:

注意,这些值是按字母顺序排序的。因此,无论棋子在棋盘上的排列方式如何,每块棋子都会得到相同的索引,因为棋盘上至少有一块棋子


如果要定义值,可以使用字典:

查找={
"--": 0,
“wK”:1,“wQ”:2,“wR”:3,“wB”:4,“wN”:5,“wp”:6,
“bK”:7,“bQ”:8,“bR”:9,“bB”:10,“bN”:11,“bp”:12
}
index=numpy.array([[lookup[p]用于行中的p]用于板中的行])
印刷品(索引)
输出:

['--' 'bB' 'bK' 'bN' 'bQ' 'bR' 'bp' 'wB' 'wK' 'wN' 'wQ' 'wR' 'wp'] 

[[ 5  3  1  4  2  1  3  5]
 [ 6  6  6  6  6  6  6  6]
 [ 0  0  0  0  0  0  0  0]
 [ 0  0  0  0  0  0  0  0]
 [ 0  0  0  0  0  0  0  0]
 [ 0  0  0  0  0  0  0  0]
 [12 12 12 12 12 12 12 12]
 [11  9  7 10  8  7  9 11]]
[[ 9 11 10  8  7 10 11  9]
 [12 12 12 12 12 12 12 12]
 [ 0  0  0  0  0  0  0  0]
 [ 0  0  0  0  0  0  0  0]
 [ 0  0  0  0  0  0  0  0]
 [ 0  0  0  0  0  0  0  0]
 [ 6  6  6  6  6  6  6  6]
 [ 3  5  4  2  1  4  5  3]]