コード例 #1
0
ファイル: image_class.cpp プロジェクト: V-Italy/optical_flow
void FlowField::writeErrorToPNG(std::string filename, FlowField &t){
  FlowField tmp;
  std::pair<int, int> size = Size();
  tmp.Resize(size);

  for (int i = 0; i < size.first; i++){
    for (int j = 0; j < size.second; j++){
      tmp.u[i][j] = u[i][j] - t.u[i][j];
      tmp.v[i][j] = v[i][j] - t.v[i][j];
    }
  }

  std::vector< std::vector<RGBA> > src = tmp.getColorImage();
  std::vector<unsigned char> raw (size.first * size.second * 4);

  for (int j = 0; j < size.second; j++){
    for (int i = 0; i < size.first; i++){
      raw[j * size.first * 4 + i * 4] = src[i][j].r;
      raw[j * size.first * 4 + i * 4 + 1] = src[i][j].g;
      raw[j * size.first * 4 + i * 4 + 2] = src[i][j].b;
      raw[j * size.first * 4 + i * 4 + 3] = src[i][j].a;
    }
  }

  lodepng::encode(filename.c_str(), raw, size.first, size.second);
}