www.pudn.com > Particlefilter_code.zip > FileIO.cpp
///////////////////////////////////////////////////////////////////////////////////// // // Convenient routines for writing/ reading data // // XinFan 2003.5.26 // ///////////////////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include#include "FileIO.h" #include "cv.h" /////////////////////////////////////////////////////////////////////////////////// // Write CvMat, float data // The first 8 bytes are two int32 number:width, height and data type(in bytes) // Here data type is indicated as 3 for convenience // Then the data write in row order ///////////////////////////////////////////////////////////////////////////////// bool WriteMat32F(const char* filename, void *data) { CvMat *mat = (CvMat *)data; //Only processing float-typ data if (CV_ARR_DEPTH(mat->type) != CV_32F) { return false; } //Get raw data int step; CvSize size; float *buffer; cvGetRawData(mat, (unsigned char**)&buffer, &step, &size); int element_size = 3; //write file FILE *fp; fp = fopen(filename, "wb"); if (fp == 0) return false; //Write width and height fwrite(&size, sizeof(CvSize), 1, fp); //Write data type fwrite(&element_size, sizeof(int), 1, fp); //Write data fwrite(buffer, sizeof(float), size.width * size.height, fp); fclose(fp); return true; } /////////////////////////////////////////////////////////////////////////////////// // Generic Routine to Write CvMat data // The first 8 bytes are two int32 number: width, height and data type(in bytes) // 1 ----- unsigned char // 2 ----- short // 4 ----- int // 8 ----- long // So "long" data writing is not supported // Then the data write in row order ///////////////////////////////////////////////////////////////////////////////// bool WriteMat(const char* filename, void *data) { CvMat *mat = (CvMat *)data; //Get raw data int step; CvSize size; unsigned char*buffer; cvGetRawData(mat, &buffer, &step, &size); int element_size = sizeof(buffer[0]); //write file FILE *fp; fp = fopen(filename, "wb"); if (fp == 0) return false; //Write width and height fwrite(&size, sizeof(CvSize), 1, fp); //Write data type fwrite(&element_size, sizeof(int), 1, fp); //Write data, in case the rows != 4 * I for (int i = 0; i < size.height; i++, buffer += step) { fwrite(buffer, element_size, size.width, fp); } fclose(fp); return true; } /**************************************************************************\ * * GetAppPath() *Purpose: * * Get the path of the current application * *return value: * CString * * \***************************************************************************/ CString GetAppPath() { char exePathAll[80]; GetModuleFileName(NULL, exePathAll, 80); //Just want to use CString class memeber functions CString stemp(exePathAll); return (stemp.Left( stemp.ReverseFind('\\') )); } /**************************************************************************\ * * RemoveExt() *Purpose: * * Get the filename, that is, removing the extension name * *return value: * CString * * \***************************************************************************/ CString RemoveExt(const CString &szName) { return (szName.Left(szName.GetLength() - 4)); } /**************************************************************************\ * * GetExt() *Purpose: * * Get the extension name with dot "." * *return value: * CString * * \***************************************************************************/ CString GetExt(const CString &szName) { return (szName.Right(4)); } /**************************************************************************\ * * GetTime() *Purpose: * * Get the time(second) string * *return value: * CString * * \***************************************************************************/ CString GetTime(void) { SYSTEMTIME time; GetLocalTime(&time); CString datetime; datetime.Format(" H%dM%dS%d", time.wHour, time.wMinute, time.wSecond); return (datetime); } /**************************************************************************\ * * GetDate() *Purpose: * * Get the date string * *return value: * CString * * \***************************************************************************/ CString GetDate(void) { SYSTEMTIME time; GetSystemTime(&time); CString datetime; datetime.Format(" %d-%d-%d", time.wYear, time.wMonth, time.wDay); return (datetime); }