-
Notifications
You must be signed in to change notification settings - Fork 1
/
heatmaps_release.py
65 lines (53 loc) · 2.5 KB
/
heatmaps_release.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
from heatmap import Heatmap
import Image
from calculator import Calculate
import pandas as pd
class Heatmaps:
def __init__(self):
self.calculate = Calculate()
self.l = []
self.x_coords = []
self.y_coords = []
self.my_dpi = 1.17
def init_list(self):
datafile = './datafiles/random_coords_birds.csv'
df = pd.read_csv(datafile)
i = len(df['X'])
for _ in range(i):
x = df['X'][_]
y = df['Y'][_]
if (y > self.calculate.upper_left[1]) and (y < self.calculate.lower_left[1]) \
and (x > self.calculate.upper_left[0]) and (x < self.calculate.upper_right[0]):
self.l.append((df['X'][_], df['Y'][_]))
self.x_coords = [self.x_coords[0] for self.x_coords in self.l]
self.y_coords = [self.y_coords[1] for self.y_coords in self.l]
def read_txt(self):
lines = [line.rstrip('\n').strip().strip('[').strip(']') for line in open('./datafiles/SECOND.txt')]
self.l = [line.split(',') for line in lines]
self.l = [[float(coord[0]), float(coord[1])] for coord in self.l]
# self.x_coords = [self.x_coords[0] for self.x_coords in self.l]
# self.y_coords = [self.y_coords[1] for self.y_coords in self.l]
def generate_heatmap_layer(self):
hm = Heatmap()
foreground = hm.heatmap(self.l, area=((self.calculate.upper_left[0], self.calculate.lower_left[1]),
(self.calculate.upper_right[0], self.calculate.upper_left[1])), scheme='green-red')
foreground.save("foreground.png")
def merge_photos(self):
foreground = Image.open("./foreground.png")
foreground = foreground.resize((self.calculate.pic_width, self.calculate.pic_height))
foreground.save("foreground.png")
# foreground = foreground.transform((self.w, self.h), Image.EXTENT, (self.upper_left[0], self.upper_left[1], self.upper_right[0], self.lower_left[1]))
# foreground.save("foreground.png")
# path to image
picture = "./pictures/stop_please.png"
background = Image.open(picture)
background = background.resize((self.calculate.pic_width, self.calculate.pic_height))
foreground = Image.open("./foreground.png")
background.paste(foreground, (0, 0), foreground)
background.save("birds.png")
if __name__ == "__main__":
map = Heatmaps()
map.init_list()
# map.read_txt()
map.generate_heatmap_layer()
map.merge_photos()