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