【发布时间】:2009-10-04 08:53:16
【问题描述】:
我正在尝试使用此代码...
char mysmooth1_ descr[] = "my smooth1: My smooth1 replaced avg() func. and assign sum to pixel";
void mysmooth1 (int dim, pixel *src, pixel *dst)
{
int i, j;
int ii, jj;
pixel_ sum sum;
pixel current_ pixel;
for (i = 0; i < dim; i++)
for (j = 0; j < dim; j++)
{
initialize_pixel_sum(&sum);
for(ii = max(i-1, 0); ii <= min(i+1, dim-1); ii++)
for(jj = max(j-1, 0); jj <= min(j+1, dim-1); jj++)
accumulate_sum(&sum, src[RIDX(ii, jj, dim)]);
{
current_ pixel.red = (unsigned short) (sum.red/sum.num);
current_ pixel.green = (unsigned short) (sum.green/sum.num);
current_ pixel.blue = (unsigned short) (sum.blue/sum.num);
dst[RIDX(i, j, dim)] = current_pixel;
}
}
}
并用此代码替换对accumulate_sum的函数调用...
static void accumulate_ sum (pixel_sum *sum, pixel p)
{
sum->red += (int) p.red;
sum->green += (int) p.green;
sum->blue += (int) p.blue;
sum->num++;
return;
}
现在我想出的完整代码,包括我试图用 sum 的实际代码替换函数调用 sum,看起来像这样......
char mysmooth2_descr[] = "my smooth2: My smooth1 replaced avg() func. and assign sum to pixel and accumulate sum func.";
void mysmooth2(int dim, pixel *src, pixel *dst)
{
int i, j, num;
int ii, jj;
pixel_sum sum;
pixel current_pixel;
for (i = 0; i < dim; i++)
for (j = 0; j < dim; j++)
{
initialize_pixel_sum(&sum);
for(ii = max(i-1, 0); ii <= min(i+1, dim-1); ii++)
for(jj = max(j-1, 0); jj <= min(j+1, dim-1); jj++)
sum.red += (int) p.red;
sum.green += (int) p.green;
sum.blue += (int) p.blue;
sum.num++;
{
current_ pixel.red = (unsigned short) (sum.red/sum.num);
current_ pixel.green = (unsigned short) (sum.green/sum.num);
current_ pixel.blue = (unsigned short) (sum.blue/sum.num);
dst[RIDX(i, j, dim)] = current_pixel;
}
}
}
现在我认为我做对了,但我不断收到错误,导致我无法编译代码……如果有人能告诉我我做错了什么,那就太好了。我在某处缺少括号吗?我是否应该在某处添加更多代码...任何可以帮助我在未来做到这一点的建议或示例将不胜感激。谢谢。
实际上,我现在意识到我在尝试用实际代码替换函数调用 accumulate_sum 时搞砸了……任何建议……也许是我搞砸了它的括号……
【问题讨论】:
-
我不想使用内联函数我只想用实际代码替换函数调用accumulate_sum...
-
正确缩进代码后,更容易看出问题
-
@John 很好奇你为什么不想使用内联。恕我直言,内联结合了速度优势和更好的可读性?
-
@Igor 修复帖子中的代码会丢失问题的上下文
-
您已经发布了 4 次相同的问题。 stackoverflow.com/questions/1515023/… -- 你能坚持1个线程吗?