mirror of
https://github.com/opencv/opencv_contrib.git
synced 2025-10-20 04:25:42 +08:00
Merge pull request #3515 from asmorkalov:as/find_ellipses_memory
Fixed memory leak in EllipseDetector and Mat addressing
This commit is contained in:
@@ -1272,9 +1272,9 @@ void EllipseDetectorImpl::preProcessing(Mat1b &image, Mat1b &dp, Mat1b &dn) {
|
|||||||
|
|
||||||
// buffer
|
// buffer
|
||||||
int *magBuffer[3];
|
int *magBuffer[3];
|
||||||
void *buffer = malloc((imgSize.width + 2) * (imgSize.height + 2) +
|
AutoBuffer<int> buffer((imgSize.width + 2) * (imgSize.height + 2) +
|
||||||
(imgSize.width + 2) * 3 * sizeof(int));
|
(imgSize.width + 2) * 3);
|
||||||
magBuffer[0] = (int *) buffer;
|
magBuffer[0] = buffer.data();
|
||||||
magBuffer[1] = magBuffer[0] + imgSize.width + 2;
|
magBuffer[1] = magBuffer[0] + imgSize.width + 2;
|
||||||
magBuffer[2] = magBuffer[1] + imgSize.width + 2;
|
magBuffer[2] = magBuffer[1] + imgSize.width + 2;
|
||||||
uchar *map = (uchar *) (magBuffer[2] + imgSize.width + 2);
|
uchar *map = (uchar *) (magBuffer[2] + imgSize.width + 2);
|
||||||
@@ -1300,8 +1300,8 @@ void EllipseDetectorImpl::preProcessing(Mat1b &image, Mat1b &dp, Mat1b &dn) {
|
|||||||
// 2 - the pixel does belong to an edge
|
// 2 - the pixel does belong to an edge
|
||||||
for (int i = 0; i <= imgSize.height; i++) {
|
for (int i = 0; i <= imgSize.height; i++) {
|
||||||
int *tmpMag = magBuffer[(i > 0) + 1] + 1;
|
int *tmpMag = magBuffer[(i > 0) + 1] + 1;
|
||||||
const short *tmpDx = (short *) (dx[i]);
|
const short *tmpDx = dx.ptr<short>(i);
|
||||||
const short *tmpDy = (short *) (dy[i]);
|
const short *tmpDy = dy.ptr<short>(i);
|
||||||
uchar *tmpMap;
|
uchar *tmpMap;
|
||||||
int prevFlag = 0;
|
int prevFlag = 0;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user