0
此函數應該逐像素地通過在2n + 1「半徑」內旋轉其周圍顏色平均值上每個像素的顏色來模糊圖像。C - 浮點異常(核心轉儲)
(跳到下一個像素的部分已經實現了,不用擔心)。
我成功編譯這段代碼:
void
blur_pixels(image *img, pixel *p, size_t i, size_t j)
{
//i = current height of pixel, j = current width of pixel
int side = 2*blurRate+1;
int total = 0;
int leftRight = i-blurRate;
int upDown = j-blurRate;
int tmpHr = 0, tmpHg = 0, tmpHb = 0;
for(; upDown < j+blurRate; upDown++) {
if(upDown >= 0 && upDown < img->height) {
for(; leftRight < i+blurRate; leftRight++) {
if(leftRight >= 0 && leftRight < img->width) {
tmpHr += (p+leftRight)->r;
tmpHg += (p+leftRight)->g;
tmpHb += (p+leftRight)->b;
total++;
}
}
}
}
p->r=tmpHr/total;
p->g=tmpHg/total;
p->b=tmpHb/total;
}
但是當我運行的代碼,我得到以下異常:
Floating point exception
有誰知道爲什麼嗎?
確定'循環後total'> 0? – tkausl
可能被零除。使用調試器。 –
可能總數爲0. –