⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fileio.cpp

📁 关于时下流行的粒子滤波程序的源码
💻 CPP
字号:
/////////////////////////////////////////////////////////////////////////////////////
//
//	Convenient routines for writing/ reading	data
//	
//	XinFan	2003.5.26
//
/////////////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include <stdio.h>
#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);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -