mirror of
https://github.com/opencv/opencv.git
synced 2025-08-05 22:19:14 +08:00
[move sift.cpp] fix overflow issue when computing diagonal
- with big images the int multiplication can overflow
original commit: d4df727d38
This commit is contained in:
parent
24284d3d17
commit
99d914ea3b
@ -544,7 +544,7 @@ static void calcSIFTDescriptor( const Mat& img, Point2f ptf, float ori, float sc
|
||||
float hist_width = SIFT_DESCR_SCL_FCTR * scl;
|
||||
int radius = cvRound(hist_width * 1.4142135623730951f * (d + 1) * 0.5f);
|
||||
// Clip the radius to the diagonal of the image to avoid autobuffer too large exception
|
||||
radius = std::min(radius, (int) sqrt((double) img.cols*img.cols + img.rows*img.rows));
|
||||
radius = std::min(radius, (int) sqrt(((double) img.cols)*img.cols + ((double) img.rows)*img.rows));
|
||||
cos_t /= hist_width;
|
||||
sin_t /= hist_width;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user