opencv读写CSV文件

 

首先我的CSV文件是这样的:

opencv读写CSV文件_第1张图片

//************************************
// Method:    ReadCsv
// FullName:  CFaceRecognition::ReadCsv
// Access:    protected 
// Returns:   void
// Qualifier:
// Parameter: const string & filename	文件路径
// Parameter: cv::vector & images	存放图片的vector
// Parameter: cv::vector & labels	存放标签的vector
// Parameter: char separator			分隔符
//************************************
void CFaceRecognition::ReadCsv(const string& filename, cv::vector& images, cv::vector& labels, char separator)
{
	std::ifstream file(filename.c_str(), ifstream::in);
	if (!file) 
	{
		string error_message = "No valid input file was given, please check the given filename.";
		CV_Error(CV_StsBadArg, error_message);
	}
	string line, path, classlabel;
	while (getline(file, line)) 
	{
		stringstream liness(line);
		getline(liness, path, separator);
		getline(liness, classlabel);
		if (!path.empty() && !classlabel.empty()) {
			Mat image = imread(path, CV_LOAD_IMAGE_GRAYSCALE);
			images.push_back(image);
			labels.push_back(atoi(classlabel.c_str()));
		}
	}
	file.close();
}

 

下面是保存图片并且更新CSV文件,不需要保存图片,将相关代码去掉即可:

 

//************************************
// Method:    SaveGrayMatAndUpdateCSV		保存图片并更新CSV文件
// FullName:  CFaceRecognition::SaveGrayMatAndUpdateCSV
// Access:    protected 
// Returns:   void
// Qualifier:
// Parameter: const vector images
// Parameter: const vector labels
//************************************
void CFaceRecognition::SaveGrayMatAndUpdateCSV(const vector images, const vector labels)
{
	string strFaceLibrary = "E:/att_faces/";
	string strFolderName = strFaceLibrary + m_strRegisterFace2Name;

	// 为图片创建必要的目录
	CFileEx::CreateFolderForFile(strFolderName.c_str());

	// // 将图片路径更新到csv文件中
	ofstream StreamToFile("face.csv", ofstream::app);
	if (!StreamToFile)
	{
		string error_message = "No valid input file was given, please check the given filename.";
		CV_Error(CV_StsBadArg, error_message);
	}
	
	for (int i =0;i

 

你可能感兴趣的:(OpenCV)