2015-08-28 747 views

回答

1

假設您正在處理無符號數,灰度圖像的亮度值範圍爲0到65,535(2^16 - 1)。將其轉換爲8位值,範圍將爲0-255(2^8 - 1)。所以你想保留每個數字的最重要的8位(最左邊的8位)。您可以將每個數字除以2^8,並將結果放在四周,或將數字右移8位。每個右移位n個空格相當於將十進制數除以2^n並將結果顯示出來。

int rows; 
int cols; 
unsigned int* image; 

unsigned char*downConvertImage(unsigned int* img, int rows, int cols) { 

    unsigned char* out = new unsigned char[rows*cols]; 

    for (int i = 0; i < rows*cols - 1; i++) 
     out[i] = (unsigned char*) image[i]/256; 

    return out; 
}