qiita.com
import cv2
import numpy as np
from google.colab.patches import cv2_imshow
from PIL import Image
from staticmap import StaticMap
def get_map(
url, lat=33.84167, lng=132.76611, width=2000, height=2000, zoom=12, fn="map.png"
):
smap = StaticMap(width, height, url_template=url)
img = smap.render(zoom=zoom, center=[lng, lat])
img.save(fn)
lat, lng, zoom = 34.0663192, 132.9975244, 14
kokudo = "https://cyberjapandata.gsi.go.jp/xyz/pale/{z}/{x}/{y}.png"
rakuten2m = "https://gateway-api.global.rakuten.com/dsd/geoserver/4g2m/mno_coverage_map/gwc/service/gmaps?LAYERS=mno_coverage_map:all_map&FORMAT=image/png&TRANSPARENT=TRUE&x={x}&y={y}&zoom={z}"
rakuten4m = "https://gateway-api.global.rakuten.com/dsd/geoserver/4g4m/mno_coverage_map/gwc/service/gmaps?LAYERS=mno_coverage_map:all_map&FORMAT=image/png&TRANSPARENT=TRUE&x={x}&y={y}&zoom={z}"
get_map(
kokudo,
lat=lat,
lng=lng,
zoom=zoom,
width=2000,
height=2000,
)
get_map(
rakuten2m, lat=lat, lng=lng, zoom=zoom, width=2000, height=2000, fn="area2m.png"
)
get_map(
rakuten4m, lat=lat, lng=lng, zoom=zoom, width=2000, height=2000, fn="area4m.png"
)
def bgr_mask(img, bgr):
bgrLower = np.array(bgr)
bgrUpper = np.array(bgr)
img_mask = cv2.inRange(img, bgrLower, bgrUpper)
return img_mask
srcmap = cv2.imread("map.png")
src2m = cv2.imread("area2m.png")
src4m = cv2.imread("area4m.png")
"""
# エリア
[186, 102, 255]
# 拡大予定エリア
[221, 128, 196]
# パートナー
[215, 166, 255]
"""
mask2m = bgr_mask(src2m, [221, 128, 196])
mask4m = bgr_mask(src4m, [221, 128, 196])
mask = cv2.bitwise_xor(mask2m, mask4m)
cv2_imshow(mask)
kernel = np.ones((3, 3), np.uint8)
opening = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel)
cv2_imshow(opening)
area = cv2.bitwise_and(src4m, src4m, mask=opening)
cv2_imshow(area)
dst = cv2.addWeighted(srcmap, 0.5, area, 0.5, 0)
cv2_imshow(dst)
cv2.imwrite("dst.png", area)