OpenCV: Multiplizieren von Bildern in C ++ und C

Ich habe gerade die Multiplikationsfunktionen mit C api (cvMul) und C ++ api (mul und multiply) verwendet. Aber ich bekomme ein anderes Ergebnis von der C-Funktion und den C ++

Ergebnis von cvMul (es ist ein weißes Bild) Ergebnis von mul und multiplizieren

Hier ist der Code, den ich für beide Implementierungen verwende:

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

Das Eingabebild ist das gleiche, und wenn ich den horizontalen Gradienten überprüfe, ist es auch für beide Implementierungen das gleiche. Warum sollte die Multiplikation also unterschiedliche Ergebnisse liefern? (Ich bin daran interessiert, das Ergebnis der C-Implementierung zu erhalten.)

Antworten auf die Frage(0)

Ihre Antwort auf die Frage