Add assertion to prevent processing of large images in remap

pull/7601/head
Vladislav Sovrasov 9 years ago
parent 6c12533160
commit af01267f23
  1. 2
      modules/imgproc/include/opencv2/imgproc.hpp
  2. 2
      modules/imgproc/src/imgwarp.cpp

@ -2286,6 +2286,8 @@ not supported by this function.
borderMode=BORDER_TRANSPARENT, it means that the pixels in the destination image that borderMode=BORDER_TRANSPARENT, it means that the pixels in the destination image that
corresponds to the "outliers" in the source image are not modified by the function. corresponds to the "outliers" in the source image are not modified by the function.
@param borderValue Value used in case of a constant border. By default, it is 0. @param borderValue Value used in case of a constant border. By default, it is 0.
@note
Due to current implementaion limitations the size of an input and output images should be less than 32767x32767.
*/ */
CV_EXPORTS_W void remap( InputArray src, OutputArray dst, CV_EXPORTS_W void remap( InputArray src, OutputArray dst,
InputArray map1, InputArray map2, InputArray map1, InputArray map2,

@ -4856,6 +4856,8 @@ void cv::remap( InputArray _src, OutputArray _dst,
Mat src = _src.getMat(), map1 = _map1.getMat(), map2 = _map2.getMat(); Mat src = _src.getMat(), map1 = _map1.getMat(), map2 = _map2.getMat();
_dst.create( map1.size(), src.type() ); _dst.create( map1.size(), src.type() );
Mat dst = _dst.getMat(); Mat dst = _dst.getMat();
CV_Assert( dst.cols < SHRT_MAX && dst.rows < SHRT_MAX && src.cols < SHRT_MAX && src.rows < SHRT_MAX );
if( dst.data == src.data ) if( dst.data == src.data )
src = src.clone(); src = src.clone();

Loading…
Cancel
Save