Как преодолеть вот эту ошибку:
Цитата:
Error: whitespace expected in file after scale factor
В 2015м году использовал софт на MS 2005 и формировал выходные файлы по следующему коду
(образец был дан на сайте получателей результата):
Код:
void WriteFilePFM(float *data, int width, int height, const char* filename, float scalefactor=1/255.0)
{
// Open the file
FILE *stream = fopen(filename, "wb");
if (stream == 0) {
fprintf(stderr, "WriteFilePFM: could not open %s\n", filename);
exit(1);
}
// sign of scalefact indicates endianness, see pfms specs
if (littleendian())
scalefactor = -scalefactor;
// write the header: 3 lines: Pf, dimensions, scale factor (negative val == little endian)
fprintf(stream, "Pf\n%d %d\n%f\n", width, height, scalefactor);
int n = width;
// write rows -- pfm stores rows in inverse order!
for (int y = height-1; y >= 0; y--) {
float* ptr = data + y * width;
// change invalid pixels (which seem to be represented as -10) to INF
for (int x = 0; x < width; x++) {
if (ptr[x] < 0)
ptr[x] = INFINITY;
}
if ((int)fwrite(ptr, sizeof(float), n, stream) != n) {
fprintf(stderr, "WriteFilePFM: problem writing data\n");
exit(1);
}
}
// close file
fclose(stream);
}
И тогда в 2015м эти файлы спокойно грузились на сайте Middleburry.
Теперь перешел на MS VS 2017 и попытался upload те же файлы.
Ответ:
Error: whitespace expected in file after scale factorХозяева не дают точного ответа, так как с Windows традиционно не работают.
Это следсвие неправильного формирования заголовка,
Код:
// write the header: 3 lines: Pf, dimensions, scale factor (negative val == little endian)
fprintf(stream, "Pf\n%d %d\n%f\n", width, height, scalefactor);
или может быть данные сразу после заголовка?
или теперь они поменяли negative val == little endian
у меня он отрицательный.
На сайте обещали посмотреть через неделю,
но мне нужно загрузить результат как раз до этой даты.
Один и тот же deadline CVPR
Заранее благодарю за любую идею.