Fixed MSVC 2013 build errors and workaround for an internal compiler crash.
authorJose-Luis Blanco-Claraco <jlblanco@ual.es>
Sun, 20 Oct 2013 15:28:45 +0000 (17:28 +0200)
committerJose-Luis Blanco-Claraco <jlblanco@ual.es>
Sun, 20 Oct 2013 15:28:45 +0000 (17:28 +0200)
3rdparty/openexr/IlmImf/ImfAcesFile.cpp
3rdparty/openexr/IlmImf/ImfOutputFile.cpp
3rdparty/openexr/IlmImf/ImfScanLineInputFile.cpp
3rdparty/openexr/IlmImf/ImfTiledMisc.cpp
3rdparty/openexr/IlmImf/ImfTiledOutputFile.cpp
3rdparty/openexr/Imath/ImathMatrixAlgo.cpp
modules/features2d/src/features2d_init.cpp
modules/features2d/src/orb.cpp

index de4bf83..9418b9d 100644 (file)
@@ -42,6 +42,7 @@
 #include <ImfRgbaFile.h>
 #include <ImfStandardAttributes.h>
 #include <Iex.h>
+#include <algorithm> // for std::max()
 
 using namespace std;
 using namespace Imath;
index 8831ec9..e69b92b 100644 (file)
@@ -58,6 +58,7 @@
 #include <vector>
 #include <fstream>
 #include <assert.h>
+#include <algorithm> // for std::max()
 
 
 namespace Imf {
index f7a12a3..5d8b522 100644 (file)
@@ -56,6 +56,7 @@
 #include <string>
 #include <vector>
 #include <assert.h>
+#include <algorithm> // for std::max()
 
 
 namespace Imf {
index 57f52f1..9588e78 100644 (file)
@@ -43,6 +43,7 @@
 #include "Iex.h"
 #include <ImfMisc.h>
 #include <ImfChannelList.h>
+#include <algorithm> // for std::max()
 
 
 namespace Imf {
index 0882106..0bc3cb3 100644 (file)
@@ -63,6 +63,7 @@
 #include <fstream>
 #include <assert.h>
 #include <map>
+#include <algorithm> // for std::max()
 
 
 namespace Imf {
index f0d2ed6..7ddc649 100644 (file)
@@ -44,6 +44,7 @@
 
 #include "ImathMatrixAlgo.h"
 #include <cmath>
+#include <algorithm> // for std::max()
 
 #if defined(OPENEXR_DLL)
     #define EXPORT_CONST __declspec(dllexport)
index 780a67b..a49ea9f 100644 (file)
@@ -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<FeatureDetector>(obj, "detector", obj.detector, false, 0, 0, "Detector algorithm.");
                   obj.info()->addParam(obj, "maxTotalKeypoints", obj.maxTotalKeypoints);
                   obj.info()->addParam(obj, "gridRows", obj.gridRows);
                   obj.info()->addParam(obj, "gridCols", obj.gridCols));
index 7ed3ff0..5790faf 100644 (file)
@@ -139,9 +139,14 @@ static void computeOrbDescriptor(const KeyPoint& kpt,
     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)]
+    float x, y;
+    int ix, iy;
+#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
     float x, y;
     int ix, iy;
@@ -935,7 +940,7 @@ void ORB::operator()( InputArray _image, InputArray _mask, std::vector<KeyPoint>
     }
 }
 
-void ORB::detectImpl( const Mat& image, std::vector<KeyPoint>& keypoints, const Mat& mask) const
+void ORB::detectImpl(const Mat& image, std::vector<KeyPoint>& keypoints, const Mat& mask) const
 {
     (*this)(image, mask, keypoints, noArray(), false);
 }