2011-06-14 4 views
3

Existe-t-il un moyen de convertir le pointeur IplImage en pointeur flottant? Fondamentalement, convertir l'imagedata en float. Appréciez toute aide à ce sujet.OpenCV IplImage data à flotter

+0

UTILISIEZ OpenCV2 + vous? – Jacob

Répondre

0

Vous ne pouvez pas convertir l'image pour flotter simplement en lançant le pointeur. Vous devez faire une boucle sur chaque pixel et calculer la nouvelle valeur.

Notez que la plupart des types d'image flottante supposent une plage de 0 à 1, vous devez donc diviser chaque pixel par ce que vous voulez que le maximum soit.

7

utilisation cvConvert(src,dst)src est l'image source et l'image est dst à virgule flottante préaffectées.

E.g.

dst = cvCreateImage(cvSize(src->width,src->height),IPL_DEPTH_32F,1); 
cvConvert(src,dst); 
+0

J'ajouterais: "et * puis * vous pouvez (et devez) lancer imageData pour flotter." – Simon

1
// Original image gets loaded as IPL_DEPTH_8U 
IplImage* colored = cvLoadImage("coins.jpg", CV_LOAD_IMAGE_UNCHANGED); 
if (!colored) 
{ 
    printf("cvLoadImage failed!\n"); 
    return; 
} 

// Allocate a new IPL_DEPTH_32F image with the same dimensions as the original 
IplImage* img_32f = cvCreateImage(cvGetSize(colored), 
            IPL_DEPTH_32F, 
            colored->nChannels); 
if (!img_32f) 
{ 
    printf("cvCreateImage failed!\n"); 
    return; 
} 

cvConvertScale(colored, img_32f); 

// quantization for 32bit. Without it, this img would not be displayed properly 
cvScale(img_32f, img_32f, 1.0/255); 

cvNamedWindow("test", CV_WINDOW_AUTOSIZE); 
cvShowImage ("test", img_32f); 
Questions connexes