2
我正在使用C++来处理图像。这种格式可以保存8/16/32位整数和32/64位浮点数组。像素大小(可变类型)由标题标志给出。 当我读取使用cfitsio库[http://heasarc.gsfc.nasa.gov/fitsio/]我得到字符数组保持所述图像的所有像素此图像中的一个:C++图像阵列类型
char* array = new char[npix*bytepix]; // bytepix is the number of bytes per pixel
fits_read_img(infptr, datatype, first, npix, &nulval, lArray, &anynul, &status);
我可以然后通过类型转换得到像素的“真实”值。 I.E.要得到一个32位的第i个像素的值的整数,我会做:
int32_t pixelValue = ((int32_t*) lArray)[i];
我想知道什么是与此一般处理的最简洁的方式,因为我不知道是什么像素类型将在我编写代码时生效。
我目前做的是这样的:
switch(bytepix){
case 1:{
int8_t *vecVal = ((int8_t*) array);
}
break;
case 2:{
int16_t *vecVal = ((int16_t*) array);
}
break;
case 4:{
int32_t *vecVal = ((int32_t*) array);
}
break;
case 8:{
int64_t *vecVal = ((int64_t*) array);
}
break;
default:
cout << "error\n";
break;
}
}
这显然是丑陋的,而不是非常灵活。
非常感谢您的帮助!