Из документации для folium.raster_layers.ImageOverlay
параметр image
должен быть « строковым, файловым или массивоподобным объектом »:
изображение ( строка, файл или массивоподобный объект ) - данные, которые вы хотите нарисовать на карте.* Если строка, она будет записана непосредственно в выходной файл.* Если файл, то его содержимое будет преобразовано как встроенное в выходной файл.* Если он похож на массив, он будет преобразован в строку PNG base64 и встроен в вывод.
В вашем коде вы передали PIL Image
.
img = Image.open("GS.png")
Image
не поддерживает сериализацию в формате JSON.
Попробуйте вместо этого передать путь к файлу изображения:
import os
img = os.path.abspath("GS.png")
folium.raster_layers.ImageOverlay(
img,
[[ya.min(), xa.min()], [ya.max(), xa.max()]],
opacity=0.5).add_to(mapa)
Или, если вам действительно нужен PIL Image
, и поскольку у вас уже есть numpy (потому что это зависимость от folium), вы также можете преобразовать Image
в пустой массив перед передачей в ImageOverlay
:
img = Image.open("GS.png")
folium.raster_layers.ImageOverlay(
numpy.array(img),
[[ya.min(), xa.min()], [ya.max(), xa.max()]],
opacity=0.5).add_to(mapa)