From: Alexander Alekhin Date: Thu, 31 May 2018 16:08:00 +0000 (+0300) Subject: calib3d: cv::findContours() doesn't require to clone input X-Git-Tag: accepted/tizen/6.0/unified/20201030.111113~1^2~619^2~17^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1bc96e3ed0568412707cf9536f60a4d9e10b999a;p=platform%2Fupstream%2Fopencv.git calib3d: cv::findContours() doesn't require to clone input --- diff --git a/modules/calib3d/src/calibinit.cpp b/modules/calib3d/src/calibinit.cpp index 4c2d950..7eade39 100644 --- a/modules/calib3d/src/calibinit.cpp +++ b/modules/calib3d/src/calibinit.cpp @@ -538,7 +538,11 @@ int cvFindChessboardCorners( const void* arr, CvSize pattern_size, int max_quad_buf_size = 0; cvFree(&quads); cvFree(&corners); +#ifdef USE_CV_FINDCONTOURS + Mat binarized_img = thresh_img_new; +#else Mat binarized_img = thresh_img_new.clone(); // make clone because cvFindContours modifies the source image +#endif int quad_count = icvGenerateQuads( &quads, &corners, storage, binarized_img, flags, &max_quad_buf_size ); PRINTF("Quad count: %d/%d\n", quad_count, (pattern_size.width/2+1)*(pattern_size.height/2+1)); SHOW_QUADS("New quads", thresh_img_new, quads, quad_count); @@ -604,7 +608,11 @@ int cvFindChessboardCorners( const void* arr, CvSize pattern_size, int max_quad_buf_size = 0; cvFree(&quads); cvFree(&corners); +#ifdef USE_CV_FINDCONTOURS + Mat binarized_img = thresh_img; +#else Mat binarized_img = (useAdaptive) ? thresh_img : thresh_img.clone(); // make clone because cvFindContours modifies the source image +#endif int quad_count = icvGenerateQuads( &quads, &corners, storage, binarized_img, flags, &max_quad_buf_size); PRINTF("Quad count: %d/%d\n", quad_count, (pattern_size.width/2+1)*(pattern_size.height/2+1)); SHOW_QUADS("Old quads", thresh_img, quads, quad_count);