Bonjour,

Je viens de commencer à pratiquer opencv c++. Je vais normaliser une image entre 0 et 1.

J'ai commencé par un exemple facile:
Soit un vecteur 1D:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
unsigned char data[8]={200,200,4,255,4,255,5,255};
 
Mat matr(1,8,CV_8UC1,&data)// les données est de type unsigned char
 
Mat matrf(1,8,CV_32FC1);// les données est de type float.
 
//Normaliser matr
cout<<" matrf: = "<<matrf.type()<<endl;// vérification de type avant normalize. type =5 =CV_32FC1
 
 normalize(matr, matrf,0.0,1.0,NORM_MINMAX);
 
cout<<" matrf: = "<<matrf<<endl;
 
cout<<" matrf: = "<<matrf.type()<<endl;// vérification de type après  normalize. type=0=CV_8UC1
Resultat:

matrf: = [1, 1, 0, 1, 0, 1, 0, 1]// les valeurs doivent être de type float entre 0 et 1. Je dois avoir des valeurs comme 0.780876 (première valeur).
Après une vérification j'ai vérifié le type de matrf après la normalize et après normalize. J'ai trouvé que le type de matrf prend le même type de matr! Alors quel l'intérêt de la déclaration de matrf et comment résoudre ce problème? Merci