将图像读入元组数组的最快方法是什么?

2024-06-01 01:18:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将省份分配给一个区域,以便在游戏mod中使用。我有两张地区和省份的地图。 provinces filearea file。 目前,我正在用Python读取一个图像,并使用PIL将其存储在一个数组中,如下所示:

import PIL

land_prov_pic = Image.open(INPUT_FILES_DIR + land_prov_str)
land_prov_array = np.array(land_prov_pic)
image_size = land_prov_pic.size
for x in range(image_size[0]):
    if x % 100 == 0:
        print(x)
    for y in range(image_size[1]):

        land_prov_array[x][y] = land_prov_pic.getpixel((x,y))

最终得到的是land_prov_数组[x][y]=(R,G,B)

但是,这种获取速度非常慢,尤其是对于大型图像。我试着使用opencv阅读它,如下所示:

import opencv
land_prov_array = cv2.imread(INPUT_FILES_DIR + land_prov_str)
land_prov_array = cv2.cvtColor(land_prov_array, cv2.COLOR_BGR2RGB) #Convert from BGR to RGB

但是现在land_prov_array[x][y] = [R G B]是一个ndarray不能插入到集合中。但它比之前的for循环快得多。如何将数组中没有for循环的每个元素的[R G B]转换为(R,G,B),或者更好的是,以这种方式读取它

编辑:添加图片、更多说明和代码块以提高可读性


Tags: 图像imageimportforinputsizepil数组