【发布时间】:2011-09-15 00:33:42
【问题描述】:
有没有办法将 IplImage 指针转换为浮点指针?基本上将图像数据转换为浮点数。 感谢您对此的任何帮助。
【问题讨论】:
有没有办法将 IplImage 指针转换为浮点指针?基本上将图像数据转换为浮点数。 感谢您对此的任何帮助。
【问题讨论】:
使用cvConvert(src,dst),其中src 是源图像,dst 是预分配的浮点图像。
例如
dst = cvCreateImage(cvSize(src->width,src->height),IPL_DEPTH_32F,1);
cvConvert(src,dst);
【讨论】:
// 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-1,因此您需要将每个像素除以您想要的最大值。
【讨论】: