Commit a49f4fe7247ad3e5e8c3ea0c8de73535379bcaa6
1 parent
d2b7bc13
解决释放handle有内存泄漏的问题
Showing
3 changed files
with
9 additions
and
39 deletions
src/left_over/MSRegionSurveilanceCpu.cpp
... | ... | @@ -41,23 +41,6 @@ int IRegionSurveillanceCpu::rs_init(const rs_params &param) |
41 | 41 | } |
42 | 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 | 44 | int r = 0; |
62 | 45 | for (int i = 0; i < rect_num; ++i) |
63 | 46 | { |
... | ... | @@ -70,20 +53,10 @@ int IRegionSurveillanceCpu::rs_detect(const sy_img &img_data, region_info* regio |
70 | 53 | RegionInfo reginifos; |
71 | 54 | reginifos.AlarmInfo = region_infos->alarm_info; // 1进入禁区 2离开禁区 3单向越界 4双向越界 5徘徊 6丢包 |
72 | 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 | 57 | CMPoint pROI[MAXVERTEXNUM]; |
79 | 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 | 62 | int totalObjCount = 0; |
... | ... | @@ -94,11 +67,9 @@ int IRegionSurveillanceCpu::rs_detect(const sy_img &img_data, region_info* regio |
94 | 67 | memcpy(gray->imageData, img_data.data_, img_data.w_*img_data.h_ * img_data.c_); |
95 | 68 | //cvSetData(gray, img_data.data_, img_data.w_); |
96 | 69 | for (int k = 0; k < rect_num; ++k) |
97 | - //int k = 0; | |
98 | 70 | { |
99 | 71 | IplImage * img = cvCreateImage(cvSize(rect[k].width_, rect[k].height_), 8, 1); |
100 | 72 | Screenshot(gray, img, rect[k]); |
101 | - //cv::Mat roi_img = cv::src_img(Range(0, 100), Range(50, 200)); | |
102 | 73 | IReginCpu[k]->RSDetect((unsigned char*)(img->imageData), ®inifos); |
103 | 74 | auto ObjCount = IReginCpu[k]->getObjectNum(); |
104 | 75 | ... | ... |
src/left_over/RegionSurveillanceProcess.h
... | ... | @@ -31,12 +31,12 @@ public: |
31 | 31 | // } |
32 | 32 | // |
33 | 33 | //}; |
34 | - | |
34 | + virtual ~RegionSurveillanceProcess() {}; | |
35 | 35 | virtual int rs_init(const rs_params ¶m) = 0; |
36 | 36 | virtual int rs_init_region(int num_roi, region_info* region_infos/*, bool iflog*/) = 0; |
37 | 37 | virtual int rs_detect(const sy_img &img_data, region_info* region_infos, rs_result *result) = 0; |
38 | 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 | 40 | int licence_status = -1; |
41 | 41 | int thrd_status = -1; |
42 | 42 | double scale; | ... | ... |
src/left_over/svibe.cpp
... | ... | @@ -3352,14 +3352,13 @@ void RegionSurveillance::RSrelease() |
3352 | 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 | 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 | 3362 | free(vbM); |
3364 | 3363 | vbM = NULL; |
3365 | 3364 | } | ... | ... |