In calcOpticalFlowSF, fixed several uninitialized uses of matrices.
authorRoman Donchenko <roman.donchenko@itseez.com>
Fri, 16 Aug 2013 10:43:18 +0000 (14:43 +0400)
committerRoman Donchenko <roman.donchenko@itseez.com>
Fri, 16 Aug 2013 10:43:18 +0000 (14:43 +0400)
This should fix that pesky test failure that pops up from time to time.

I don't actually know if the default values should be zeros, but the tests
pass, so...

modules/video/src/simpleflow.cpp

index 1de8084..7a32245 100644 (file)
@@ -287,7 +287,7 @@ static Mat upscaleOpticalFlow(int new_rows,
 static Mat calcIrregularityMat(const Mat& flow, int radius) {
   const int rows = flow.rows;
   const int cols = flow.cols;
-  Mat irregularity(rows, cols, CV_32F);
+  Mat irregularity = Mat::zeros(rows, cols, CV_32F);
   for (int r = 0; r < rows; ++r) {
     const int start_row = max(0, r - radius);
     const int end_row = min(rows - 1, r + radius);
@@ -409,7 +409,7 @@ static void extrapolateFlow(Mat& flow,
                             const Mat& speed_up) {
   const int rows = flow.rows;
   const int cols = flow.cols;
-  Mat done(rows, cols, CV_8U);
+  Mat done = Mat::zeros(rows, cols, CV_8U);
   for (int r = 0; r < rows; ++r) {
     for (int c = 0; c < cols; ++c) {
       if (!done.at<uchar>(r, c) && speed_up.at<uchar>(r, c) > 1) {
@@ -504,8 +504,8 @@ CV_EXPORTS_W void calcOpticalFlowSF(Mat& from,
   Mat mask = Mat::ones(curr_from.size(), CV_8U);
   Mat mask_inv = Mat::ones(curr_from.size(), CV_8U);
 
-  Mat flow(curr_from.size(), CV_32FC2);
-  Mat flow_inv(curr_to.size(), CV_32FC2);
+  Mat flow = Mat::zeros(curr_from.size(), CV_32FC2);
+  Mat flow_inv = Mat::zeros(curr_to.size(), CV_32FC2);
 
   Mat confidence;
   Mat confidence_inv;