Commit a49f4fe7247ad3e5e8c3ea0c8de73535379bcaa6

Authored by Zou XiKun
1 parent d2b7bc13

解决释放handle有内存泄漏的问题

src/left_over/MSRegionSurveilanceCpu.cpp
@@ -41,23 +41,6 @@ int IRegionSurveillanceCpu::rs_init(const rs_params &param) @@ -41,23 +41,6 @@ int IRegionSurveillanceCpu::rs_init(const rs_params &param)
41 } 41 }
42 int IRegionSurveillanceCpu::rs_init_region(int num_roi, region_info* region_infos/*, bool iflog*/) 42 int IRegionSurveillanceCpu::rs_init_region(int num_roi, region_info* region_infos/*, bool iflog*/)
43 { 43 {
44 - //RegionInfo reginifos;  
45 - //reginifos.AlarmInfo = region_infos->alarm_info; // 1进入禁区 2离开禁区 3单向越界 4双向越界 5徘徊 6丢包  
46 - //reginifos.nPointNum = region_infos->point_num;  
47 - //for (int i = 0; i < MAXVERTEXNUM; ++i)  
48 - //{  
49 - // reginifos.pROI[i].x = region_infos->p_roi[i].x_;  
50 - // reginifos.pROI[i].y = region_infos->p_roi[i].y_;  
51 - //}  
52 - //CMPoint pROI[MAXVERTEXNUM];  
53 - //reginifos.nFrameNum = region_infos->frame_num;  
54 - //reginifos.dirPoint.x = region_infos->dir_point.x_;  
55 - //reginifos.dirPoint.y = region_infos->dir_point.y_;  
56 - //reginifos.finaldir = region_infos->finaldir;  
57 - //reginifos.ArrowStartPoint.x = region_infos->arrow_start_point.x_;  
58 - //reginifos.ArrowStartPoint.y = region_infos->arrow_start_point.y_;  
59 - //reginifos.ArrowEndPoint.x = region_infos->arrow_end_point.x_; //箭头的终止端点 箭头指向正方形  
60 - //reginifos.ArrowEndPoint.y = region_infos->arrow_end_point.y_; //箭头的终止端点 箭头指向正方形  
61 int r = 0; 44 int r = 0;
62 for (int i = 0; i < rect_num; ++i) 45 for (int i = 0; i < rect_num; ++i)
63 { 46 {
@@ -70,20 +53,10 @@ int IRegionSurveillanceCpu::rs_detect(const sy_img &amp;img_data, region_info* regio @@ -70,20 +53,10 @@ int IRegionSurveillanceCpu::rs_detect(const sy_img &amp;img_data, region_info* regio
70 RegionInfo reginifos; 53 RegionInfo reginifos;
71 reginifos.AlarmInfo = region_infos->alarm_info; // 1进入禁区 2离开禁区 3单向越界 4双向越界 5徘徊 6丢包 54 reginifos.AlarmInfo = region_infos->alarm_info; // 1进入禁区 2离开禁区 3单向越界 4双向越界 5徘徊 6丢包
72 reginifos.nPointNum = region_infos->point_num; 55 reginifos.nPointNum = region_infos->point_num;
73 - /*for (int i = 0; i < MAXVERTEXNUM; ++i)  
74 - {  
75 - reginifos.pROI[i].x = region_infos->p_roi[i].x_;  
76 - reginifos.pROI[i].y = region_infos->p_roi[i].y_;  
77 - }*/ 56 +
78 CMPoint pROI[MAXVERTEXNUM]; 57 CMPoint pROI[MAXVERTEXNUM];
79 reginifos.nFrameNum = region_infos->frame_num; 58 reginifos.nFrameNum = region_infos->frame_num;
80 - //reginifos.dirPoint.x = region_infos->dir_point.x_;  
81 - //reginifos.dirPoint.y = region_infos->dir_point.y_;  
82 - //reginifos.finaldir = region_infos->finaldir;  
83 - //reginifos.ArrowStartPoint.x = region_infos->arrow_start_point.x_;  
84 - //reginifos.ArrowStartPoint.y = region_infos->arrow_start_point.y_;  
85 - //reginifos.ArrowEndPoint.x = region_infos->arrow_end_point.x_; //箭头的终止端点 箭头指向正方形  
86 - //reginifos.ArrowEndPoint.y = region_infos->arrow_end_point.y_; //箭头的终止端点 箭头指向正方形 59 +
87 60
88 61
89 int totalObjCount = 0; 62 int totalObjCount = 0;
@@ -94,11 +67,9 @@ int IRegionSurveillanceCpu::rs_detect(const sy_img &amp;img_data, region_info* regio @@ -94,11 +67,9 @@ int IRegionSurveillanceCpu::rs_detect(const sy_img &amp;img_data, region_info* regio
94 memcpy(gray->imageData, img_data.data_, img_data.w_*img_data.h_ * img_data.c_); 67 memcpy(gray->imageData, img_data.data_, img_data.w_*img_data.h_ * img_data.c_);
95 //cvSetData(gray, img_data.data_, img_data.w_); 68 //cvSetData(gray, img_data.data_, img_data.w_);
96 for (int k = 0; k < rect_num; ++k) 69 for (int k = 0; k < rect_num; ++k)
97 - //int k = 0;  
98 { 70 {
99 IplImage * img = cvCreateImage(cvSize(rect[k].width_, rect[k].height_), 8, 1); 71 IplImage * img = cvCreateImage(cvSize(rect[k].width_, rect[k].height_), 8, 1);
100 Screenshot(gray, img, rect[k]); 72 Screenshot(gray, img, rect[k]);
101 - //cv::Mat roi_img = cv::src_img(Range(0, 100), Range(50, 200));  
102 IReginCpu[k]->RSDetect((unsigned char*)(img->imageData), &reginifos); 73 IReginCpu[k]->RSDetect((unsigned char*)(img->imageData), &reginifos);
103 auto ObjCount = IReginCpu[k]->getObjectNum(); 74 auto ObjCount = IReginCpu[k]->getObjectNum();
104 75
src/left_over/RegionSurveillanceProcess.h
@@ -31,12 +31,12 @@ public: @@ -31,12 +31,12 @@ public:
31 // } 31 // }
32 // 32 //
33 //}; 33 //};
34 - 34 + virtual ~RegionSurveillanceProcess() {};
35 virtual int rs_init(const rs_params &param) = 0; 35 virtual int rs_init(const rs_params &param) = 0;
36 virtual int rs_init_region(int num_roi, region_info* region_infos/*, bool iflog*/) = 0; 36 virtual int rs_init_region(int num_roi, region_info* region_infos/*, bool iflog*/) = 0;
37 virtual int rs_detect(const sy_img &img_data, region_info* region_infos, rs_result *result) = 0; 37 virtual int rs_detect(const sy_img &img_data, region_info* region_infos, rs_result *result) = 0;
38 //virtual int rs_get_arrowdir(const sy_point &p_roi0, const sy_point &p_roi1, const sy_point &dir) = 0; 38 //virtual int rs_get_arrowdir(const sy_point &p_roi0, const sy_point &p_roi1, const sy_point &dir) = 0;
39 - void* handle; 39 + //void* handle;
40 int licence_status = -1; 40 int licence_status = -1;
41 int thrd_status = -1; 41 int thrd_status = -1;
42 double scale; 42 double scale;
src/left_over/svibe.cpp
@@ -3352,14 +3352,13 @@ void RegionSurveillance::RSrelease() @@ -3352,14 +3352,13 @@ void RegionSurveillance::RSrelease()
3352 greyImgData = NULL; 3352 greyImgData = NULL;
3353 } 3353 }
3354 3354
3355 - if (vbM->bg_samples != NULL)  
3356 - {  
3357 - free(vbM->bg_samples);  
3358 - vbM->bg_samples = NULL;  
3359 - }  
3360 -  
3361 if (vbM != NULL) 3355 if (vbM != NULL)
3362 { 3356 {
  3357 + if (vbM->bg_samples != NULL)
  3358 + {
  3359 + free(vbM->bg_samples);
  3360 + vbM->bg_samples = NULL;
  3361 + }
3363 free(vbM); 3362 free(vbM);
3364 vbM = NULL; 3363 vbM = NULL;
3365 } 3364 }