我正在尝试使用 C++ 读取和写入 FITS 图像。我正在尝试使用 CCfits,但我不知道如何获取像素缓冲区。我已经使用文档中的示例代码成功读取图像并打印出主标题,但是当我尝试读取二进制数据数组时出现错误。这是 CCfits 示例中提供的代码(我已指出错误所在)。
int readImage()
{
std::auto_ptr<FITS> pInfile(new FITS("atestfil.fit",Read,true));
PHDU& image = pInfile->pHDU();
std::valarray<unsigned long> contents;
// read all user-specifed, coordinate, and checksum keys in the image
image.readAllKeys();
image.read(contents); // !!!ERROR HERE!!!
// this doesn’t print the data, just header info.
std::cout << image << std::endl;
long ax1(image.axis(0));
long ax2(image.axis(1));
for (long j = 0; j < ax2; j+=10)
{
std::ostream_iterator<short> c(std::cout,"\t");
std::copy(&contents[j*ax1], &contents[(j+1)*ax1-1], c);
std::cout << '\n';
{
std::cout << std::endl;
return 0;
}
make 返回的错误是:
undefined reference to `void CCfits::PHDU::read<unsigned long>(std::valarray<unsigned long>&)'
事实上,根据我随源代码下载的文档,没有带有该签名的函数。所以我尝试了所有其他记录的签名,但我仍然得到基本相同的错误(只是提到了一个不同的签名)。
事实上,我打开了我本地的PHDU.h副本,发现了这一行:
template<typename S>
void read(std::valarray<S>& image) ;
我包括-lcfitsio -lCCfits
,如果我用read()函数注释掉该行,代码构建得很好。
有没有人知道如何使用这个库?
有没有人有一个工作示例?
看来 CCfits 并没有真正像宣传的那样工作。在读()函数被记录,甚至在头文件中声明,但没有实现。
只需使用 cfitsio,它就可以工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句