问题描述
|
有没有一种方法可以将IplImage指针转换为浮点指针?基本上将imagedata转换为float。
感谢对此的任何帮助。
解决方法
使用
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),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,因此您需要将每个像素除以所需的最大值。