Как сохранить / прочитать массивы данных в файле (C ++)

Я использую код, который вычисляет дескрипторы SIFT из изображения. Я должен обработать каждый кадр из видео и сохранить последовательность каждого вычисленного дескриптора. Для каждого изображения дескриптор состоит из двух массивов:

Frames = (double*)realloc(Frames, 4 * sizeof(double)* nframes);
Descr = (vl_uint8*)realloc(Descr, 128 * sizeof(vl_uint8)* nframes);

Как я могу сохранить последовательность этих двух массивов в файле, а затем восстановить эти данные (для каждого кадра видео) из файла?

0

Решение

Ты можешь использовать ofstream записать в файл. Приведенный ниже код, который, вероятно, не работает напрямую, должен указывать в правильном направлении.

#include <fstream>
#include <iterator>
#include <algorithm>

void writeDescriptors() {

std::ofstream output( "C:\\descriptors.txt", std::ios::binary );
for ( int i = 1 ; i < Frames.size(); i++ )
{
out << ",  " << Frames[i];
}
}

Чтобы снова прочитать дескрипторы, просто используйте ifstream и переверните алгоритм

2

Другие решения

Попробуйте поискать fwrite и fread.

Если у вас есть переменное количество кадров (nframes), это может помочь использовать первые 2 * 4 байта в файле для хранения точного количества кадров, содержащихся в файле.

РЕДАКТИРОВАТЬ:
http://www.cplusplus.com/reference/cstdio/fwrite/

0

По вопросам рекламы [email protected]