Normaliser une image Mat entre 0 et 1
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:
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