ITK中的双精度和智能指针问题
我遇到的问题是,我使用 Qt 从 GUI 打开一个图像(通过我创建的 ImageFrame 类,该类定义了 PixelType 如下:
typedef double PixelType;
typedef itk::Image<PixelType,2> ImageType;
在提取图像之后,我会撒谎进行 FFT,其输入是真实数据。 该错误表示:无法使用 ImageFrame 类的对象(已将像素类型定义为 double)将“itk::SmartPointer”的第三个参数转换为“double*”。
1>.\prueba_r01.cpp(126) : 错误 C2664: 'fftw_plan_dft_r2c_2d' : 没有将 'itk::SmartPointer' 参数转换为 'double *'
1>与
1> [
1> TObjectType=itk::图像
1> ]
1>没有任何可用的操作符定义转换来实现转换,或者最好使用 llamar al 操作符
现在我不明白为什么如果像素是双精度格式,它不能计算 fft。 有人可以告诉我如何解决这个问题吗?提前非常感谢大家!
The problem I have is that I open an Image from a GUI using Qt (through the class I created ImageFrame, this class has defined the PixelType as follows:
typedef double PixelType;
typedef itk::Image<PixelType,2> ImageType;
and after the extraction of the image, I would lie to make a FFT which input is real data.
The error says: it cannot be converted the third parameter of ‘itk::SmartPointer’ to ‘double*’ with and object of the ImageFrame class (which has defined the pixeltype as double).
1>.\prueba_r01.cpp(126) : error C2664: 'fftw_plan_dft_r2c_2d' : no se puede convertir el parámetro 3 de 'itk::SmartPointer' a 'double *'
1> with
1> [
1> TObjectType=itk::Image
1> ]
1> No hay disponible ningún operador de conversión definido por el usuario que pueda realizar esta conversión, o bien no se puede llamar al operador
Now I cannot understand why it cannot calculate the fft if the pixel are in double format.
Does anyone can give me an idea of how to fix this problem? Thank you all so much in advance!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
要获取像素数据(double*),您需要使用
这将返回一个double*,可以将其传递到FFTW。
To get the pixel data (a double*), you need to use
This will return a double*, that can be passed into FFTW.
这是因为
image.Pointer()
是一个智能指针对象,是数据读取指针的包装器。您必须将image.Pointer().GetPointer()
传递给 fftw。This is because
image.Pointer()
is a smart pointer object, a wrapper around the read pointer to your data. You must passimage.Pointer().GetPointer()
to fftw.