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:
Resultat:
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
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
Partager