-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathmain.py
More file actions
55 lines (45 loc) · 2.21 KB
/
main.py
File metadata and controls
55 lines (45 loc) · 2.21 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
import hydra
from nodes.VideoReader import VideoReader
from nodes.ShowNode import ShowNode
from nodes.VideoSaverNode import VideoSaverNode
from nodes.DetectionTrackingNodes import DetectionTrackingNodes
from nodes.TrackerInfoUpdateNode import TrackerInfoUpdateNode
from nodes.CalcStatisticsNode import CalcStatisticsNode
from nodes.FlaskServerVideoNode import VideoServer
from elements.VideoEndBreakElement import VideoEndBreakElement
from nodes.KafkaProducerNode import KafkaProducerNode
from utils_local.utils import check_and_set_env_var
@hydra.main(version_base=None, config_path="configs", config_name="app_config")
def main(config) -> None:
video_reader = VideoReader(config["video_reader"])
detection_node = DetectionTrackingNodes(config)
tracker_info_update_node = TrackerInfoUpdateNode(config)
calc_statistics_node = CalcStatisticsNode(config)
show_node = ShowNode(config)
save_video = config["pipeline"]["save_video"]
show_in_web = config["pipeline"]["show_in_web"]
send_info_kafka = config["pipeline"]["send_info_kafka"]
if save_video:
video_saver_node = VideoSaverNode(config["video_saver_node"])
if send_info_kafka:
kafka_producer_node = KafkaProducerNode(config)
if show_in_web:
video_server_node = VideoServer(config)
for frame_element in video_reader.process():
frame_element = detection_node.process(frame_element)
frame_element = tracker_info_update_node.process(frame_element)
frame_element = calc_statistics_node.process(frame_element)
if send_info_kafka:
frame_element = kafka_producer_node.process(frame_element)
frame_element = show_node.process(frame_element)
if save_video:
video_saver_node.process(frame_element)
if show_in_web:
video_server_node.process(frame_element)
if __name__ == "__main__":
# Проверяем и устанавливаем переменные окружения если их нет
check_and_set_env_var("VIDEO_SRC", "test_videos/test_video.mp4")
check_and_set_env_var("ROADS_JSON", "configs/entry_exit_lanes.json")
check_and_set_env_var("TOPIC_NAME", "statistics_1")
check_and_set_env_var("CAMERA_ID", 1)
main()