-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstart_realtime.py
More file actions
121 lines (104 loc) · 4.45 KB
/
start_realtime.py
File metadata and controls
121 lines (104 loc) · 4.45 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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
import collections
from datetime import datetime, timedelta
import numpy as np
from classes.data_inklinometers import DataInklinometers
from classes.json_module import JSONModule
from classes.trackbars import Trackbars
from classes.camera import Camera
from classes.inklinometer import Inklinometer
from utils.config import options_dict
from classes.read_file import ReaderTxt
from classes.convert_file_txt_to_dict2 import ConverterTxtToDict
from classes.save_inklinometer_data import SaveInlinometerData
import cv2
trackbars = Trackbars("data/data.json")
# camera = Camera("output_video2.avi")
camera = Camera(1)
name_of_window = "Test"
inklinometer = Inklinometer(camera=camera, trackbars=trackbars, options=options_dict)
def merge_twoDict(a, b): # define the merge_twoDict() function
return (a.update(b))
now_dict_data = {}
new_dict = {}
reader_txt = ReaderTxt("data/data_port_spy_2.txt")
date_time_str_list = []
CB_sum = 0
CB_n = 0
CB_aver = 0
nivel_deviation = 0
json_module = JSONModule('data/variables.json')
converter_txt_to_dict = ConverterTxtToDict()
while True:
success, img = camera.get_image()
# cv2.namedWindow(name_of_window, cv2.WINDOW_NORMAL)
# cv2.imshow(name_of_window, img)
data_inklinometer = {}
datetime_now_inklinometer = str(datetime.now().replace(microsecond=0) - timedelta(seconds=0))
date_time_str_list.append(datetime_now_inklinometer)
if date_time_str_list[0] == date_time_str_list[-1]:
CB_n += 1
CB_sum += inklinometer.center_bubble
else:
CB_aver = CB_sum / CB_n
now_dict_data[date_time_str_list[0]] = {"CB": CB_aver}
CB_n = 0
CB_sum = 0
date_time_str_list = []
save_inklinometer2 = SaveInlinometerData('data/data_inklinometer_2.json', now_dict_data)
save_inklinometer2.save_json()
now_dict_data = {}
data = converter_txt_to_dict.convert(data=reader_txt.read())
if data is not None:
save_inklinometer1 = SaveInlinometerData('data/data_inklinometer_1.json', data)
save_inklinometer1.save_json()
try:
# data[datetime_now_inklinometer] = {**data[datetime_now_inklinometer], "CB": inklinometer.center_bubble}
new_dict[str(datetime.now().replace(microsecond=0) - timedelta(seconds=1))] = {
**data[datetime_now_inklinometer], "CB": CB_aver}
# print({**data["2023-01-25 15:52:30"], "CB": inklinometer.center_bubble})
except:
pass
# data_inklinometers = DataInklinometers("data/data_inklinometer_1.json", "data/data_inklinometer_2.json",
# "data/data_inklinometers.json")
# data_inklinometers.save_json()
inklinometer.main()
trackbars.save()
winfo = np.zeros((512, 512, 3), np.uint8)
if CB_n != 0:
CB_aver = CB_sum / CB_n
# linregress_CV_VIM_slope = -0.0015104254841249417
# # linregress_CV_VIM_intercept = -2.3708779918875607
# linregress_CV_VIM_intercept = 0.36842533651553694#0.2612950309318273
linregress_CV_VIM_slope = json_module.get('linregress_CV_VIM_slope')
linregress_CV_VIM_intercept = json_module.get('linregress_CV_VIM_intercept')
CB_aver = CB_aver * linregress_CV_VIM_slope + linregress_CV_VIM_intercept
# dif = nivel_deviation - CB_aver
# print(CB_aver * linregress_CV_VIM_slope - dif)
CB_aver = round(CB_aver, 3)
winfo2 = np.zeros((512, 512, 3), np.uint8)
cv2.putText(winfo2, f"Видеоинклинометр = {round((CB_aver / 0.0047), 3)}''", (0, 120), cv2.FONT_HERSHEY_COMPLEX, 0.8,
(0, 150, 0),
2)
cv2.putText(winfo2, f"Видеоинклинометр = {CB_aver}mrad", (0, 150), cv2.FONT_HERSHEY_COMPLEX, 0.8,
(0, 150, 0),
2)
try:
if data is not None:
for d in data.values():
nivel_deviation = round(d['X'], 3)
except:
pass
cv2.putText(winfo2, f"Nivel220 = {nivel_deviation}mrad", (0, 180), cv2.FONT_HERSHEY_COMPLEX, 0.8,
(0, 150, 0),
2)
cv2.putText(winfo2, f"Difference = {abs(round((nivel_deviation-CB_aver),3))}mrad", (0, 210), cv2.FONT_HERSHEY_COMPLEX, 0.8,
(0, 150, 0),
2)
cv2.putText(winfo2, f"Difference = {abs(round(((nivel_deviation - CB_aver)/0.0047), 3))}''", (0, 240),
cv2.FONT_HERSHEY_COMPLEX, 0.8,
(0, 150, 0),
2)
cv2.imshow("Window", winfo2)
cv2.waitKey(1)
if cv2.waitKey(1) & 0xFF == ord('q'):
break