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

发布于 2024-11-18 14:44:02 字数 629 浏览 2 评论 0原文

我遇到的问题是,我使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

沫尐诺 2024-11-25 14:44:02

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

image->GetBufferPointer();

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

To get the pixel data (a double*), you need to use

image->GetBufferPointer();

This will return a double*, that can be passed into FFTW.

假装不在乎 2024-11-25 14:44:02

这是因为 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 pass image.Pointer().GetPointer() to fftw.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文