Построение тепловой карты взгляда. Как сгладить визуализацию?
Есть задача - отслеживание взгляда пользователя на экране. Имеются 2d координаты - положение взгляда в каждый момент времени. Пытался построить тепловую карту, но визуализация получается слишком дискретной и некрасивой (круги перекрывают друг друга). Подскажите, пожалуйста, есть ли способ как-либо сгладить ее, как например тут или тут? Заранее спасибо!
import cv2
import numpy as np
# Пример функции для получения текущего положения взгляда на экране
def get_point():
return np.random.randint(0, h/2, 2)
h, w = 400, 400
r = 50
all_points = np.zeros(shape=(h, w, 3)) # вся история
src = np.zeros(shape=(h, w, 3), dtype=np.uint8) # текущее положение
while True:
dot = get_point()
cv2.circle(src, (dot[0], dot[1]), radius=r, color=[255, 255, 255], thickness=-1) # Нарисовали круг
all_points += src
cv2.circle(src, (dot[0], dot[1]), radius=r, color=[0, 0, 0], thickness=-1) # очистили круг
heatmapshow = None
heatmapshow = cv2.normalize(all_points, heatmapshow, alpha=0, beta=255, norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_8U)
heatmapshow = cv2.applyColorMap(heatmapshow, cv2.COLORMAP_JET)
cv2.imshow("pict", heatmapshow)
if cv2.waitKey(10) == 27:
break