Я использую код, который вычисляет дескрипторы SIFT из изображения. Я должен обработать каждый кадр из видео и сохранить последовательность каждого вычисленного дескриптора. Для каждого изображения дескриптор состоит из двух массивов:
Frames = (double*)realloc(Frames, 4 * sizeof(double)* nframes);
Descr = (vl_uint8*)realloc(Descr, 128 * sizeof(vl_uint8)* nframes);
Как я могу сохранить последовательность этих двух массивов в файле, а затем восстановить эти данные (для каждого кадра видео) из файла?
Ты можешь использовать 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 и переверните алгоритм
Попробуйте поискать fwrite и fread.
Если у вас есть переменное количество кадров (nframes), это может помочь использовать первые 2 * 4 байта в файле для хранения точного количества кадров, содержащихся в файле.
РЕДАКТИРОВАТЬ:
http://www.cplusplus.com/reference/cstdio/fwrite/