ITK中双精度和智能指针的问题

时间:2011-07-06 12:42:58

标签: c++ fft fftw itk

我的问题是,我打开图像从使用Qt的GUI(通过我创建IMAGEFRAME类,这个类定义了PixelType如下:

typedef double PixelType;
typedef itk::Image<PixelType,2> ImageType;

在提取图像之后,我会骗取FFT,输入是真实数据。 误差表示:它不能与和所述IMAGEFRAME类的对象(其定义了pixeltype如双)被转换的“ITK ::智能指针”的第三个参数为“双*”

  

1&GT; \ prueba_r01.cpp(126):错误C2664: 'fftw_plan_dft_r2c_2d':无SE puede convertir ELparámetro3脱 'ITK ::智能指针' 一 '双*'
  1 GT;与
  1 GT; [
  1 GT; TObjectType = ITK ::图片
  1 GT; ]
  1 GT;没有干草disponibleningúnoperador德转换定义方EL usuario阙pueda realizar ESTA转换,邻边没有SE puede llamar人operador

现在我无法理解为什么如果像素是双格式的话,它无法计算fft。 有谁能告诉我如何解决这个问题?非常感谢大家!

2 个答案:

答案 0 :(得分:1)

要获取像素数据(双*),您需要使用

image->GetBufferPointer();

这将返回一个double *,可以传递给FFTW。

答案 1 :(得分:0)

这是因为image.Pointer()是一个智能指针对象,是指向数据的读指针的包装器。您必须将image.Pointer().GetPointer()传递给fftw。