OpenCV:用C ++和C乘以图像

我刚刚使用了C api(cvMul)和C ++ api(mul和multiply)的乘法函数。 但是我从C函数和C ++函数得到了不同的结果

  • cvMul的结果 (白色图像)
  • mul和multiply的结果

这是我用于两种实现的代码:

C

IplImage * gh = cvCreateImage(cvGetSize(input),IPL_DEPTH_32F,1) ; cvSobel(input,gh,1,0) ; IplImage * gh2 = cvCreateImage(cvGetSize(input),IPL_DEPTH_32F,1) ; cvMul(gh,gh,gh2) ; 

C ++

 Mat gh = Mat (input.size(), CV_32FC1); Sobel(input, gh, CV_32FC1, 1, 0); Mat gh2 = Mat (input.size(), CV_32FC1); gh2 = gh.mul(gh); // multiply (gh, gh, gh2); 

输入图像是相同的,当我检查水平渐变时,它们对于两种实现也是相同的,那么为什么乘法会得到不同的结果呢? (我有兴趣获得C实现的结果)