gpt4 book ai didi

c++ - 如何使用 ccfits 创建非方形图像?

转载 作者:太空宇宙 更新时间:2023-11-04 04:46:46 25 4
gpt4 key购买 nike

我想使用 ccfits 创建一组非平方图像。我可以在 primaryHDU 中制作一个,像这样:

long axes[2] = { jmax, imax };   
std::auto_ptr<CCfits::FITS> pFits(0);
pFits.reset ( new CCfits::FITS ( "fitfile.fits", FLOAT_IMG, 2, axes ) );

std::valarray<double> h2a0array ( jmax * imax );
for ( int i = 0 ; i < imax ; i++
for ( int j = 0 ; j < jmax ; j++ )
h2a0array [ j + jmax * i ] = i + j;

pFits->pHDU().write ( fpixel, imax * jmax, h2a0array );

但我不知道如何将其他非平方图像添加到我的 FITS 文件中。我想我必须使用 CCFITS::addImage 函数,但只能使用它获得平方图像:

long fpixel ( 1 );
std::vector<long> extAx ( 2, dim );
CCfits::ExtHDU* imageExt2 = pFits->addImage ( "h2a0array", FLOAT_IMG, extAx );
imageExt2->write ( fpixel, imax * jmax, h2a0array );

extAx vector 只包含两个值,第一个是要添加到 FITS 文件的图像的维度(1D、2D、3D),第二个是它的大小。我不知道还有什么其他方法可以将图像添加到 FITS 文件中。如果有人这样做,我们非常欢迎您的帮助!

谢谢,阿诺。

最佳答案

addImage 的最后一个参数的 vector 可以有任意维度以及尺寸中的不同轴长。没有要求轴长相同(您似乎称之为“正方形”):

vector<long> extAx ;
extAx.push_back(imax) ;
extAx.push_back(jmax) ;
extAx.push_back(kmax) ;

pFits->addImage("h2a0array", FLOAT_IMG, extAx );

关于c++ - 如何使用 ccfits 创建非方形图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20090496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com