OpenCV: Multiplicar Imagens em C ++ e C

Acabei de usar as funções de multiplicação usando C api (cvMul) e C ++ api (mul e multiply). Mas eu recebo um resultado diferente da função C e dos C ++

Resultado do cvMul (é uma imagem branca)Resulte de mul e multiplique

Aqui está o código que eu uso para as duas implementações:

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);  

A imagem de entrada é a mesma e, quando verifico o gradiente horizontal, também é o mesmo para as duas implementações. Por que a multiplicação geraria resultados diferentes? (Estou interessado em obter o resultado da implementação C)

questionAnswers(0)

yourAnswerToTheQuestion