我在測試以下函數時不斷收到此錯誤。它應該對包含0到255像素顏色的圖像的值進行歸一化處理。我發現最小值和最大值將它們更改爲0和255,然後相應地更改所有中間值以適應以前相同的差異比例:浮點異常C
void normalize(uint8_t array[],
unsigned int cols,
unsigned int rows)
{
uint8_t minValue = 255;
uint8_t maxValue = 0;
for (int i = 0; i < cols*rows ; ++i)
{
if(array[i] < minValue) minValue = array[i];
}
for (int i = 0; i < cols*rows; ++i)
{
if(array[i] < maxValue) maxValue = array[i];
}
int difference1 = maxValue - minValue;
uint8_t ratios[cols*rows];
for (int i = 0; i < cols*rows ; ++i){
ratios[i] = 0;
}
//find the ratios
for (int i = 0; i < cols*rows ; ++i){
ratios[i] = (array[i]/difference1) - 1;
}
for (int i = 0; i < cols*rows ; ++i){
if(array[i] == minValue){
array[i] = 0;
}else if(array[i] == maxValue){
array[i] = 255;
}else{
array[i] = round(ratios[i] * 255);
}
}
}
你得到一個除以零錯誤時'difference1'爲零 –
而'difference1'是0,因爲'minValue'等於' maxValue',只要圖像上有黑色像素。 – francis
謝謝!我完全沒有看到if語句中的錯誤。 – user5056973