2015-01-27 3 views
0

이미지에서 SIFT 설명자를 계산하는 코드를 사용하고 있습니다. 비디오에서 각 프레임을 처리하고 계산 된 각 디스크립터의 시퀀스를 저장해야한다. 각 이미지에 대한 설명은 두 배열에 의해 이루어집니다 :파일의 데이터 배열 저장/읽기 방법 (C++)

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

은 내가 어떻게 파일에이 두 배열의 순서를 저장하고 다음 파일 (비디오의 각 프레임에 대한) 이러한 데이터를 복구?

+0

검색을 간단하게, 뒷면의 설명을 읽어 ifstream을 사용하고 반대하기 위해

#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]; } } 

. –

+0

[이진 파일 읽기 및 쓰기] 가능한 복제본 (http://stackoverflow.com/questions/5420317/reading-and-writing-binary-file) – Mgetz

+2

웹에서 "C++ serialization images"를 검색하십시오. –

답변

0

fwrite와 fread를 찾으십시오.

가변 프레임 수 (nframes)를 사용하면 파일에있는 첫 번째 2 * 4 바이트를 사용하여 파일에 포함 된 정확한 프레임 수를 저장할 수 있습니다.

편집 : http://www.cplusplus.com/reference/cstdio/fwrite/

2

당신은 파일에 쓸 ofstream을 사용할 수 있습니다. 위의 코드는 깡통을 똑바로 쓸 수없는 경우 올바른 방향을 가리켜 야합니다. 알고리즘 구글에서 'C/C 이진 IO ++ "에 대한

+0

크기로 접두사로 써야합니다. 쓰기는 어떻게됩니까? 그냥 std :: ifstream처럼 "역전 된"알고리즘입니까? – marol

+0

꽤 많이, 그냥 하나씩 읽어주세요. – GPPK

+1

나에게 잘 어울린다고 생각합니다. +1. 그 발언으로 답을 편집하는 것은 어떨까요? – marol