在C中逐块迭代2D数组

我正在为C中的图像缩小程序做家庭作业.我的图片由2D像素阵列表示;每个像素都是一个成员为“红色”,“绿色”和“蓝色”的对象.为了解决这个问题,我试图一次访问一个块,然后调用一个找到每个块的平均RGB值的函数,并将一个新像素添加一个较小的图像数组中.每个块的大小(或比例因子)由用户输入.

举个例子,想象一下像myArray [10] [10]这样的100项2D数组.如果用户输入缩小系数3,我需要打破3乘3的迷你2D数组.我不必考虑溢出,所以在这个例子中我可以忽略最后一行和最后一列.

我编写了大部分程序,包括查找平均颜色的功能.我对如何遍历2D数组感到困惑.我知道如何顺序循环2D数组(一次一行),但我不知道如何在数组中获得小方块.

任何帮助将不胜感激!

解决方法

像这样的东西应该工作:
for(size_t bx = 0; bx < width;  bx += block_width)
for(size_t by = 0; by < height; by += block_height) {
  float sum = 0;
  for(size_t x = 0; x < block_width; ++x)
  for(size_t y = 0; y < block_height; ++y) {
    sum += array[bx + x][by + y];
  }
  average = sum / (block_width * block_height);
  new_array[bx][by] = average;
}

width是整个宽度,block_width是图中蓝色方块的长度

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...