forked from mrvgao/Python-advanced-programming
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathbroadcast.py
More file actions
59 lines (39 loc) · 1.25 KB
/
broadcast.py
File metadata and controls
59 lines (39 loc) · 1.25 KB
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
from array import array
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.animation import FuncAnimation
import cv2
def norm_square_list(vector):
norm = 0
for v in vector:
norm += v * v
return norm
def norm_square_list_comprehension(vector):
return sum([v * v for v in vector])
def norm_square_array(vector):
norm = 0
for v in vector:
norm += v * v
return norm
def norm_square_numpy(vector):
return np.sum(vector * vector)
def norm_square_numpy_dot(vector):
return np.dot(vector, vector)
image1 = cv2.imread("files/dog-01.png")
image1 = cv2.resize(image1, (100, 100)).astype(np.int32)
image2 = cv2.imread("files/dog-02.png")
image2 = cv2.resize(image2, (100, 100)).astype(np.int32)
# Define the function that implements the loop version
def l2_loop(image1, image2):
height, width, channels = image1.shape
distance = 0
for h in range(height):
for w in range(width):
for c in range(channels):
distance += (image1[h][w][c] - image2[h][w][c]) ** 2
# Define the vectorised version
def l2_vectorise(image1, image2):
return ((image1 - image2) ** 2).sum()
if __name__ == '__main__':
l2_loop(image1, image2)
l2_vectorise(image1, image2)