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); }