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;
}
}
這顯然是醜陋的,而不是非常靈活。
非常感謝您的幫助!