# Untitled

Jan 3rd, 2020
363
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
1. import numpy as np
2. from cv2_41 import cv2
3. import time
4.
7.
9.
10. def compute_average(frame,i):
11.     data=frame[labels==i].mean(axis=0)
12.     return (data[2]-data[1]) # difference between red and green channel is meaningful for me
13.
14. def compute_averages(frame):
15.     measurements = [ compute_average(frame,i) for i in range(1,len(centroids))]
16.     return measurements
17.
18. def test(frame, labels):
19.     stacked = np.dstack([frame, labels])
20.     stacked = stacked.reshape(-1, 4)
21.     sorted_stacked = stacked[stacked[:,3].argsort()]
22.
23.     indices = sorted_stacked[:,3].flatten()
24.     boundaries = np.where(indices[:-1] != indices[1:])[0] + 1
25.     boundaries = np.append(boundaries, len(stacked))
26.
27.     measurements = []
28.     for start, end in zip(boundaries[:-1], boundaries[1:]):
29.         data = sorted_stacked[start:end,:3].mean(axis=0)
30.         measurements.append(data[2]-data[1])
31.
32.     return measurements
33.
34. while True:
35.     frame = np.zeros((height, width, 3), np.uint8)
36.     cv2.randu(frame, (0,0,0), (256,256,256))
37.     start_time=time.time()
38.     measurements_a = compute_averages(frame)
39.     print("Computing A took",time.time()-start_time)
40.
41.     start_time=time.time()
42.     measurements_b = test(frame, labels)
43.     print("Computing B took",time.time()-start_time)
44.
45.     print(np.all(np.array(measurements_a) == np.array(measurements_b)))