Я пытаюсь присвоить провинции области для использования в игровом моде. У меня есть две отдельные карты для области и провинций. файл провинции , файл области . В настоящее время я читаю изображение в 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_array [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
и не может быть вставлен в набор. Но это намного быстрее, чем предыдущий для l oop. Как преобразовать [R G B]
в (R,G,B)
для каждого элемента в массиве без циклов for или, что еще лучше, прочитать его таким образом?
РЕДАКТИРОВАТЬ: добавлены картинки, подробное описание и блоки кода для удобства чтения ,