OpenCV IplImage данные для плавания - PullRequest
3 голосов
/ 15 июня 2011

Есть ли способ конвертировать указатель IplImage в указатель с плавающей точкой?В основном, преобразование изображений в float.Ценю любую помощь по этому вопросу.

Ответы [ 3 ]

7 голосов
/ 15 июня 2011

Используйте cvConvert(src,dst), где src - исходное изображение, а dst - предварительно выделенное изображение с плавающей запятой.

* 1006 Е.Г. *

dst = cvCreateImage(cvSize(src->width,src->height),IPL_DEPTH_32F,1);
cvConvert(src,dst);
1 голос
/ 11 августа 2011
// 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);
0 голосов
/ 15 июня 2011

Вы не можете преобразовать изображение в плавающее, просто наведя указатель.Вам нужно перебрать каждый пиксель и вычислить новое значение.

Обратите внимание, что большинство типов плавающих изображений принимают диапазон от 0 до 1, поэтому вам нужно разделить каждый пиксель на любое максимальное значение.

...