Comment convertir une image 16 bits en une image 32 bits en OpenCV?

Je suis novice en OpenCV. Mon programme lit les données d’image en 16 bits unsigned int. J’ai besoin de multiplier les données d’image par un gain de 16 bits unsigned int. Les données résultantes doivent donc être conservées dans un fichier image 32 bits. J’ai essayé de suivre, mais je reçois une image toute blanche 8 bits. S’il vous plaît aider.

Mat inputData = Mat(Size(width, height), CV_16U, inputdata); inputData.convertTo(input1Data, CV_32F); input1Data = input1Data * gain;//gain is ushort 

Comme Micka l’a remarqué dans le commentaire, nous devons d’abord redimensionner inputData pour obtenir des valeurs comsockets entre 0.0f et 1.0f en passant un facteur de redimensionnement:

 inputData.convertTo(input1Data, CV_32F, 1.0/65535.0f); // since in inputData // we have values between 0 and // 65535 so all resulted values // will be between 0.0f and 1.0f 

Et maintenant, la même chose avec la multiplication:

 input1Data = input1Data * gain * (1.0f / 65535.0f); // gain, of course, will be // automatically cast to float // therefore the resulted factor // will have value from 0 to 1, // so input1Data too! 

Et je pense que cela devrait aussi comstackr:

 input1Data *= gain * (1.0f / 65535.0f); 

optimiser un peu la première version en ne créant pas de données temporaires.