OpenCV: Multiplicar imágenes en C ++ y C

Acabo de usar las funciones de multiplicación usando C api (cvMul) y C ++ api (mul y multiply). Pero obtengo un resultado diferente de la función C y las funciones C ++

Resultado de cvMul (es una imagen blanca)Resultado de mul y multiplica

Aquí está el código que uso para ambas implementaciones:

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

La imagen de entrada es la misma, y cuando verifico el gradiente horizontal también es igual para ambas implementaciones, entonces, ¿por qué la multiplicación daría resultados diferentes? (Estoy interesado en obtener el resultado de la implementación de C)

Respuestas a la pregunta(0)

Su respuesta a la pregunta