我尝试使用C ++读写FITS图像。我试图使用CCfits,但我无法弄清楚如何获取像素缓冲区。我已经使用文档中的示例代码成功读取图像并打印出主标题,但是当我尝试读取二进制数据数组时出现错误。以下是CCfits示例中提供的代码(我已指出错误的位置)。
template<typename S>
void read(std::valarray<S>& image) ;
make返回的错误是:
-lcfitsio -lCCfits
事实上,根据我使用源代码下载的文档,该签名没有任何功能。所以我尝试了所有其他记录的签名,但我仍然得到了基本相同的错误(只是提到了不同的签名)。
事实上,我打开了 PHDU.h 的本地副本,发现了这一行:
df1 = iris.iloc[ : , 0:1]
df2 = iris.iloc[ : , 1:2]
.
.
.
dfn = iris.iloc[ : , n-1:n]
我包含df_group1 = df1, df2, ...., dfn
df_group2 = df1, df3, ...., df(n-1)
,如果我用 read()函数注释掉该行,代码构建正常。
是否有人知道如何使用此库?
有没有人有一个有效的例子?
答案 0 :(得分:1)
看来CCfits并没有像宣传的那样真正起作用。 read()函数已记录在案,甚至在头文件中声明,但没有实现。
只需使用cfitsio即可。
答案 1 :(得分:0)
我发现,为了使CCfits正常工作,您需要使用#include <CCfits>
。只包括你想要所需的文件不会引入函数的实现。
我还发现你需要修改一下代码,并指定一个非零长度的valarray(至少对于一个较新的gcc版本(8.x.y))。