NVIDIA DeepStream SDK API Reference

7.0 Release
nvds_analytics.h
Go to the documentation of this file.
1 
12 #ifndef _NVDS_ANALYTICS_H_
13 #define _NVDS_ANALYTICS_H_
14 #include <iostream>
15 #include <vector>
16 #include <memory>
17 #include <unordered_map>
18 
19 #ifdef __cplusplus
20 extern "C"
21 {
22 #endif
23 
24 
25 enum class eMode {
26  balanced,
27  strict,
28  loose
29 };
30 
31 enum class eModeDir {
32  use_dir,
33  pos_to_neg,
35 };
36 
37 constexpr int LAST_N_FRAMES=10;
38 constexpr int TIME_OUT_MSEC=8000;
39 constexpr uint32_t MED_FILT_MSEC=1000;
40 typedef struct {
41  bool enable;
42  std::vector<std::pair<int, int>> roi_pts;
43  std::string roi_label;
45  std::vector<int> operate_on_class;
46  int stream_id;
47 }ROIInfo;
48 
49 typedef struct {
50  bool enable;
51  std::vector<std::pair<int, int>> roi_pts;
52  std::string oc_label;
53  std::vector<int> operate_on_class;
54  int stream_id;
58 
59 
60 typedef struct {
61  bool enable;
62  bool extended;
63  std::string lc_label;
64  std::pair <double, double> lc_dir;
65  std::vector <double> lc_info;
66  std::vector<std::pair<int, int>> lcdir_pts;
67  std::vector<int> operate_on_class;
68  int stream_id;
69  enum eMode mode;
70  enum eModeDir mode_dir;
72 
73 typedef struct {
74  bool enable;
75  std::string dir_label;
76  std::pair <double, double> dir_data;
77  std::pair<int, int> x1y1;
78  std::pair<int, int> x2y2;
79  std::vector<int> operate_on_class;
80  int stream_id;
81  enum eMode mode;
83 
84 typedef struct {
85  std::vector <ROIInfo> roi_info;
86  std::vector <OverCrowdingInfo> overcrowding_info;
87  std::vector <LineCrossingInfo> linecrossing_info;
88  std::vector <DirectionInfo> direction_info;
91 
92 }StreamInfo;
93 /*
94 enum DSANALYTICS_STATUS {
95  eDSANALYTICS_STATUS_NO_EVENT = 0,
96  eDSANALYTICS_STATUS_INSIDE_ROI = 1,
97  eDSANALYTICS_STATUS_ROI_OVERCROWDING = 2,
98  eDSANALYTICS_STATUS_DIRECTION_FOLLOWED = 3,
99  eDSANALYTICS_STATUS_LINE_CROSSED = 4
100 };*/
101 
102 typedef struct {
103  uint32_t left;
104  uint32_t top;
105  uint32_t width;
106  uint32_t height;
107  uint64_t object_id;
108  int32_t class_id;
109 // std::unordered_map <std::string, enum DSANALYTICS_STATUS >obj_status;
110  std::string str_obj_status;
111  std::vector <std::string> roiStatus;
112  std::vector <std::string> ocStatus;
113  std::vector <std::string> lcStatus;
114  std::string dirStatus;
115 
116 }ObjInf;
117 
118 typedef struct {
121 
123 
124 typedef struct {
125  std::vector <ObjInf> objList;
126  std::unordered_map<std::string, OverCrowdStatus> ocStatus;
127  std::unordered_map<int, uint32_t> objCnt;
128  std::unordered_map<std::string, uint32_t> objInROIcnt;
129  std::unordered_map<std::string, uint64_t> objLCCumCnt;
130  std::unordered_map<std::string, uint64_t> objLCCurrCnt;
131  uint64_t frmPts {0};
132  int32_t srcId;
133 
135 
136 
138 {
139 public:
140  static std::unique_ptr<NvDsAnalyticCtx> create(StreamInfo &stream_info,
141  int32_t src_id, int32_t width=1920,
142  int32_t height=1080, uint32_t filtTime=MED_FILT_MSEC, uint32_t timeOut=300, uint32_t hist=50);
143  void destroy();
144  virtual void processSource(NvDsAnalyticProcessParams &process_params) = 0;
146 
147  };
148  virtual ~NvDsAnalyticCtx() {};
149 private:
150 };
151 
152 using NvDsAnalyticCtxUptr = std::unique_ptr<NvDsAnalyticCtx>;
153 #ifdef __cplusplus
154 }
155 #endif
156 
157 #endif
ROIInfo::inverse_roi
bool inverse_roi
Definition: nvds_analytics.h:44
NvDsAnalyticProcessParams
Definition: nvds_analytics.h:124
eModeDir
eModeDir
Definition: nvds_analytics.h:31
eModeDir::use_dir
@ use_dir
NvDsAnalyticProcessParams::ocStatus
std::unordered_map< std::string, OverCrowdStatus > ocStatus
Definition: nvds_analytics.h:126
OverCrowdingInfo::object_threshold
int object_threshold
Definition: nvds_analytics.h:56
StreamInfo::direction_info
std::vector< DirectionInfo > direction_info
Definition: nvds_analytics.h:88
StreamInfo::roi_info
std::vector< ROIInfo > roi_info
Definition: nvds_analytics.h:85
DirectionInfo::stream_id
int stream_id
Definition: nvds_analytics.h:80
NvDsAnalyticProcessParams::objInROIcnt
std::unordered_map< std::string, uint32_t > objInROIcnt
Definition: nvds_analytics.h:128
LineCrossingInfo::operate_on_class
std::vector< int > operate_on_class
Definition: nvds_analytics.h:67
ROIInfo::stream_id
int stream_id
Definition: nvds_analytics.h:46
ObjInf::left
uint32_t left
Holds left coordinate of the box in pixels.
Definition: nvds_analytics.h:103
ObjInf::height
uint32_t height
Holds height of the box in pixels.
Definition: nvds_analytics.h:106
NvDsAnalyticCtx
Definition: nvds_analytics.h:137
ObjInf::object_id
uint64_t object_id
Definition: nvds_analytics.h:107
ObjInf::str_obj_status
std::string str_obj_status
Definition: nvds_analytics.h:110
eModeDir::neg_to_pos
@ neg_to_pos
eMode::loose
@ loose
ROIInfo::roi_label
std::string roi_label
Definition: nvds_analytics.h:43
LAST_N_FRAMES
constexpr int LAST_N_FRAMES
Definition: nvds_analytics.h:37
TIME_OUT_MSEC
constexpr int TIME_OUT_MSEC
Definition: nvds_analytics.h:38
LineCrossingInfo::enable
bool enable
Definition: nvds_analytics.h:61
LineCrossingInfo::extended
bool extended
Definition: nvds_analytics.h:62
ObjInf::ocStatus
std::vector< std::string > ocStatus
Definition: nvds_analytics.h:112
DirectionInfo::x2y2
std::pair< int, int > x2y2
Definition: nvds_analytics.h:78
NvDsAnalyticProcessParams::objCnt
std::unordered_map< int, uint32_t > objCnt
Definition: nvds_analytics.h:127
NvDsAnalyticProcessParams::objList
std::vector< ObjInf > objList
Definition: nvds_analytics.h:125
ObjInf::lcStatus
std::vector< std::string > lcStatus
Definition: nvds_analytics.h:113
OverCrowdStatus::overCrowdingCount
uint32_t overCrowdingCount
Definition: nvds_analytics.h:120
LineCrossingInfo::lcdir_pts
std::vector< std::pair< int, int > > lcdir_pts
Definition: nvds_analytics.h:66
DirectionInfo::enable
bool enable
Definition: nvds_analytics.h:74
DirectionInfo::x1y1
std::pair< int, int > x1y1
Definition: nvds_analytics.h:77
eModeDir::pos_to_neg
@ pos_to_neg
LineCrossingInfo
Definition: nvds_analytics.h:60
OverCrowdingInfo
Definition: nvds_analytics.h:49
ObjInf::roiStatus
std::vector< std::string > roiStatus
Definition: nvds_analytics.h:111
OverCrowdingInfo::enable
bool enable
Definition: nvds_analytics.h:50
OverCrowdingInfo::time_threshold_in_ms
int time_threshold_in_ms
Definition: nvds_analytics.h:55
NvDsAnalyticCtx::processSource
virtual void processSource(NvDsAnalyticProcessParams &process_params)=0
NvDsAnalyticCtxUptr
std::unique_ptr< NvDsAnalyticCtx > NvDsAnalyticCtxUptr
Definition: nvds_analytics.h:152
DirectionInfo
Definition: nvds_analytics.h:73
ROIInfo::operate_on_class
std::vector< int > operate_on_class
Definition: nvds_analytics.h:45
ObjInf::width
uint32_t width
Holds width of the box in pixels.
Definition: nvds_analytics.h:105
eMode
eMode
Copyright (c) 2020, NVIDIA CORPORATION.
Definition: nvds_analytics.h:25
MED_FILT_MSEC
constexpr uint32_t MED_FILT_MSEC
Definition: nvds_analytics.h:39
StreamInfo
Definition: nvds_analytics.h:84
OverCrowdingInfo::roi_pts
std::vector< std::pair< int, int > > roi_pts
Definition: nvds_analytics.h:51
StreamInfo::config_width
int config_width
Definition: nvds_analytics.h:89
NvDsAnalyticCtx::create
static std::unique_ptr< NvDsAnalyticCtx > create(StreamInfo &stream_info, int32_t src_id, int32_t width=1920, int32_t height=1080, uint32_t filtTime=MED_FILT_MSEC, uint32_t timeOut=300, uint32_t hist=50)
ROIInfo
Definition: nvds_analytics.h:40
NvDsAnalyticProcessParams::objLCCumCnt
std::unordered_map< std::string, uint64_t > objLCCumCnt
Definition: nvds_analytics.h:129
ObjInf::top
uint32_t top
Holds top coordinate of the box in pixels.
Definition: nvds_analytics.h:104
StreamInfo::linecrossing_info
std::vector< LineCrossingInfo > linecrossing_info
Definition: nvds_analytics.h:87
ROIInfo::enable
bool enable
Definition: nvds_analytics.h:41
eMode::strict
@ strict
NvDsAnalyticCtx::~NvDsAnalyticCtx
virtual ~NvDsAnalyticCtx()
Definition: nvds_analytics.h:148
StreamInfo::config_height
int config_height
Definition: nvds_analytics.h:90
LineCrossingInfo::lc_info
std::vector< double > lc_info
Definition: nvds_analytics.h:65
ObjInf::class_id
int32_t class_id
Definition: nvds_analytics.h:108
OverCrowdingInfo::stream_id
int stream_id
Definition: nvds_analytics.h:54
DirectionInfo::dir_label
std::string dir_label
Definition: nvds_analytics.h:75
OverCrowdStatus
Definition: nvds_analytics.h:118
OverCrowdingInfo::operate_on_class
std::vector< int > operate_on_class
Definition: nvds_analytics.h:53
ObjInf
Definition: nvds_analytics.h:102
LineCrossingInfo::stream_id
int stream_id
Definition: nvds_analytics.h:68
DirectionInfo::operate_on_class
std::vector< int > operate_on_class
Definition: nvds_analytics.h:79
ObjInf::dirStatus
std::string dirStatus
Definition: nvds_analytics.h:114
ROIInfo::roi_pts
std::vector< std::pair< int, int > > roi_pts
Definition: nvds_analytics.h:42
NvDsAnalyticCtx::NvDsAnalyticCtx
NvDsAnalyticCtx()
Definition: nvds_analytics.h:145
NvDsAnalyticCtx::destroy
void destroy()
OverCrowdStatus::overCrowding
bool overCrowding
Definition: nvds_analytics.h:119
DirectionInfo::dir_data
std::pair< double, double > dir_data
Definition: nvds_analytics.h:76
NvDsAnalyticProcessParams::objLCCurrCnt
std::unordered_map< std::string, uint64_t > objLCCurrCnt
Definition: nvds_analytics.h:130
NvDsAnalyticProcessParams::srcId
int32_t srcId
Definition: nvds_analytics.h:132
LineCrossingInfo::lc_label
std::string lc_label
Definition: nvds_analytics.h:63
StreamInfo::overcrowding_info
std::vector< OverCrowdingInfo > overcrowding_info
Definition: nvds_analytics.h:86
OverCrowdingInfo::oc_label
std::string oc_label
Definition: nvds_analytics.h:52
eMode::balanced
@ balanced
LineCrossingInfo::lc_dir
std::pair< double, double > lc_dir
Definition: nvds_analytics.h:64