diff --git a/3rdparty/openexr/IlmImf/ImfAcesFile.cpp b/3rdparty/openexr/IlmImf/ImfAcesFile.cpp index de4bf83c6..9418b9d2a 100644 --- a/3rdparty/openexr/IlmImf/ImfAcesFile.cpp +++ b/3rdparty/openexr/IlmImf/ImfAcesFile.cpp @@ -42,6 +42,7 @@ #include #include #include +#include // for std::max() using namespace std; using namespace Imath; diff --git a/3rdparty/openexr/IlmImf/ImfOutputFile.cpp b/3rdparty/openexr/IlmImf/ImfOutputFile.cpp index 8831ec94d..e69b92bd5 100644 --- a/3rdparty/openexr/IlmImf/ImfOutputFile.cpp +++ b/3rdparty/openexr/IlmImf/ImfOutputFile.cpp @@ -58,6 +58,7 @@ #include #include #include +#include // for std::max() namespace Imf { diff --git a/3rdparty/openexr/IlmImf/ImfScanLineInputFile.cpp b/3rdparty/openexr/IlmImf/ImfScanLineInputFile.cpp index f7a12a347..5d8b52201 100644 --- a/3rdparty/openexr/IlmImf/ImfScanLineInputFile.cpp +++ b/3rdparty/openexr/IlmImf/ImfScanLineInputFile.cpp @@ -56,6 +56,7 @@ #include #include #include +#include // for std::max() namespace Imf { diff --git a/3rdparty/openexr/IlmImf/ImfTiledMisc.cpp b/3rdparty/openexr/IlmImf/ImfTiledMisc.cpp index 57f52f17f..9588e789f 100644 --- a/3rdparty/openexr/IlmImf/ImfTiledMisc.cpp +++ b/3rdparty/openexr/IlmImf/ImfTiledMisc.cpp @@ -43,6 +43,7 @@ #include "Iex.h" #include #include +#include // for std::max() namespace Imf { diff --git a/3rdparty/openexr/IlmImf/ImfTiledOutputFile.cpp b/3rdparty/openexr/IlmImf/ImfTiledOutputFile.cpp index 08821060d..0bc3cb3c3 100644 --- a/3rdparty/openexr/IlmImf/ImfTiledOutputFile.cpp +++ b/3rdparty/openexr/IlmImf/ImfTiledOutputFile.cpp @@ -63,6 +63,7 @@ #include #include #include +#include // for std::max() namespace Imf { diff --git a/3rdparty/openexr/Imath/ImathMatrixAlgo.cpp b/3rdparty/openexr/Imath/ImathMatrixAlgo.cpp index f0d2ed679..7ddc64968 100644 --- a/3rdparty/openexr/Imath/ImathMatrixAlgo.cpp +++ b/3rdparty/openexr/Imath/ImathMatrixAlgo.cpp @@ -44,6 +44,7 @@ #include "ImathMatrixAlgo.h" #include +#include // for std::max() #if defined(OPENEXR_DLL) #define EXPORT_CONST __declspec(dllexport) diff --git a/3rdparty/openexr/fix_msvc2013_errors.patch b/3rdparty/openexr/fix_msvc2013_errors.patch new file mode 100644 index 000000000..0ce106f13 --- /dev/null +++ b/3rdparty/openexr/fix_msvc2013_errors.patch @@ -0,0 +1,72 @@ +diff --git a/3rdparty/openexr/IlmImf/ImfAcesFile.cpp b/3rdparty/openexr/IlmImf/ImfAcesFile.cpp +index de4bf83..9418b9d 100644 +--- a/3rdparty/openexr/IlmImf/ImfAcesFile.cpp ++++ b/3rdparty/openexr/IlmImf/ImfAcesFile.cpp +@@ -42,6 +42,7 @@ + #include + #include + #include ++#include // for std::max() + + using namespace std; + using namespace Imath; +diff --git a/3rdparty/openexr/IlmImf/ImfOutputFile.cpp b/3rdparty/openexr/IlmImf/ImfOutputFile.cpp +index 8831ec9..e69b92b 100644 +--- a/3rdparty/openexr/IlmImf/ImfOutputFile.cpp ++++ b/3rdparty/openexr/IlmImf/ImfOutputFile.cpp +@@ -58,6 +58,7 @@ + #include + #include + #include ++#include // for std::max() + + + namespace Imf { +diff --git a/3rdparty/openexr/IlmImf/ImfScanLineInputFile.cpp b/3rdparty/openexr/IlmImf/ImfScanLineInputFile.cpp +index f7a12a3..5d8b522 100644 +--- a/3rdparty/openexr/IlmImf/ImfScanLineInputFile.cpp ++++ b/3rdparty/openexr/IlmImf/ImfScanLineInputFile.cpp +@@ -56,6 +56,7 @@ + #include + #include + #include ++#include // for std::max() + + + namespace Imf { +diff --git a/3rdparty/openexr/IlmImf/ImfTiledMisc.cpp b/3rdparty/openexr/IlmImf/ImfTiledMisc.cpp +index 57f52f1..9588e78 100644 +--- a/3rdparty/openexr/IlmImf/ImfTiledMisc.cpp ++++ b/3rdparty/openexr/IlmImf/ImfTiledMisc.cpp +@@ -43,6 +43,7 @@ + #include "Iex.h" + #include + #include ++#include // for std::max() + + + namespace Imf { +diff --git a/3rdparty/openexr/IlmImf/ImfTiledOutputFile.cpp b/3rdparty/openexr/IlmImf/ImfTiledOutputFile.cpp +index 0882106..0bc3cb3 100644 +--- a/3rdparty/openexr/IlmImf/ImfTiledOutputFile.cpp ++++ b/3rdparty/openexr/IlmImf/ImfTiledOutputFile.cpp +@@ -63,6 +63,7 @@ + #include + #include + #include ++#include // for std::max() + + + namespace Imf { +diff --git a/3rdparty/openexr/Imath/ImathMatrixAlgo.cpp b/3rdparty/openexr/Imath/ImathMatrixAlgo.cpp +index f0d2ed6..7ddc649 100644 +--- a/3rdparty/openexr/Imath/ImathMatrixAlgo.cpp ++++ b/3rdparty/openexr/Imath/ImathMatrixAlgo.cpp +@@ -44,6 +44,7 @@ + + #include "ImathMatrixAlgo.h" + #include ++#include // for std::max() + + #if defined(OPENEXR_DLL) + #define EXPORT_CONST __declspec(dllexport) diff --git a/modules/features2d/src/features2d_init.cpp b/modules/features2d/src/features2d_init.cpp index 780a67b87..959c1ac9d 100644 --- a/modules/features2d/src/features2d_init.cpp +++ b/modules/features2d/src/features2d_init.cpp @@ -176,7 +176,7 @@ CV_INIT_ALGORITHM(DenseFeatureDetector, "Feature2D.Dense", obj.info()->addParam(obj, "varyImgBoundWithScale", obj.varyImgBoundWithScale)); CV_INIT_ALGORITHM(GridAdaptedFeatureDetector, "Feature2D.Grid", - obj.info()->addParam(obj, "detector", obj.detector); + obj.info()->addParam(obj, "detector", obj.detector, false, 0, 0); // Extra params added to avoid VS2013 fatal error in opencv2/core.hpp (decl. of addParam) obj.info()->addParam(obj, "maxTotalKeypoints", obj.maxTotalKeypoints); obj.info()->addParam(obj, "gridRows", obj.gridRows); obj.info()->addParam(obj, "gridCols", obj.gridCols)); diff --git a/modules/features2d/src/orb.cpp b/modules/features2d/src/orb.cpp index 7ed3ff03c..a6e8ffab3 100644 --- a/modules/features2d/src/orb.cpp +++ b/modules/features2d/src/orb.cpp @@ -138,13 +138,16 @@ static void computeOrbDescriptor(const KeyPoint& kpt, const uchar* center = &img.at(cvRound(kpt.pt.y), cvRound(kpt.pt.x)); int step = (int)img.step; -#if 1 - #define GET_VALUE(idx) \ - center[cvRound(pattern[idx].x*b + pattern[idx].y*a)*step + \ - cvRound(pattern[idx].x*a - pattern[idx].y*b)] -#else float x, y; int ix, iy; +#if 1 +#define GET_VALUE(idx) \ + (x = pattern[idx].x*a - pattern[idx].y*b, \ + y = pattern[idx].x*b + pattern[idx].y*a, \ + ix = cvRound(x), \ + iy = cvRound(y), \ + *(center + iy*step + ix) ) +#else #define GET_VALUE(idx) \ (x = pattern[idx].x*a - pattern[idx].y*b, \ y = pattern[idx].x*b + pattern[idx].y*a, \