fix photo::cloning::IlluminationChange when IPP is used
authorAdrien BAK <adrien.bak@gmail.com>
Tue, 30 Sep 2014 05:28:44 +0000 (14:28 +0900)
committerAdrien BAK <adrien.bak@gmail.com>
Tue, 30 Sep 2014 05:28:44 +0000 (14:28 +0900)
modules/photo/src/seamless_cloning.hpp

index 669be9f..8f77e42 100644 (file)
@@ -543,15 +543,19 @@ void Cloning::illum_change(Mat &I, Mat &mask, Mat &wmask, Mat &cloned, float alp
     Mat mag = Mat(I.size(),CV_32FC3);
     magnitude(srx32,sry32,mag);
 
+    Mat magnitude_mask = mag != 0;
+
     Mat multX, multY, multx_temp, multy_temp;
 
     multiply(srx32,pow(alpha,beta),multX);
     pow(mag,-1*beta, multx_temp);
-    multiply(multX,multx_temp,srx32);
+    multiply(multX,multx_temp,multX);
+    multX.copyTo(srx32, magnitude_mask);
 
     multiply(sry32,pow(alpha,beta),multY);
     pow(mag,-1*beta, multy_temp);
-    multiply(multY,multy_temp,sry32);
+    multiply(multY,multy_temp,multY);
+    multY.copyTo(sry32, magnitude_mask);
 
     Mat zeroMask = (srx32 != 0);