如何顺时针旋转pgm文件?

时间:2018-02-12 02:44:51

标签: c++ pgm

我尝试过很多东西,但却做不到。我知道第一行=最后一列,但不知道如何交换这两行。

void pgm_cw(vector<IVec>& p) {
  int rows = p.size();
  int cols = p[0].size();
  vector<IVec> temp;  //2nd vector to hold rotated
  temp.resize(cols);
  for(int i = 0; i < cols; i++) {
      temp[i].resize(rows);
  }

}

1 个答案:

答案 0 :(得分:0)

您可以在纸上制作图表:在矩形内绘制一个点,调用其坐标,例如x,y并尝试&#34;猜测&#34;或&#34;估计&#34;它在旋转的矩形中具有坐标。请记住,坐标从0开始。我相信y,cols-x-1,但请亲自检查。

然后执行嵌套循环,将像素值复制到相应的坐标。

size_t image1_x_limit = image1[0].size();
size_t image1_y_limit = image1.size();
for (size_t image1_y = 0; image1_y < image1_y_limit; ++image1_y)
{
    for (size_t image1_x = 0; image1_x < image1_x_limit; ++image1_x)
    {
        size_t image2_x = image1_y_limit - 1 - image1_y;
        size_t image2_y = image1_x;
        image2[image2_y][image2_x] = image1[image1_y][image1_x];
    }
}