亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C++實(shí)現(xiàn)保存數(shù)據(jù)至EXCEL

 更新時間:2022年11月11日 10:28:19   作者:翟天保Steven  
這篇文章主要介紹了C++實(shí)現(xiàn)保存數(shù)據(jù)至EXCEL,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

場景需求

在用C++編程時,往往會有保存數(shù)據(jù)的需求,比如我做圖像處理的工作,經(jīng)常會想將圖片的像素數(shù)據(jù)保存至Excel中,然后用matlab進(jìn)行分析或者用于其他方面。

為了解決該需求,本文將為大家提供一個保存數(shù)據(jù)至EXCEL的函數(shù)。我以保存一幅圖像數(shù)據(jù)為例,大家可以根據(jù)自己需求進(jìn)行微調(diào)。

功能函數(shù)代碼 

void WritePicToExcel(string name, cv::Mat pic)
{
    // 我這里寫了斷言,可以根據(jù)需要自己調(diào)整
	CV_Assert(pic.type() == CV_32FC1);
	ofstream outfile(name);
	int row = pic.rows;
	int col = pic.cols;
	for (int i = 0; i < row; i++)
	{
        // 采用指針讀取Mat矩陣的方式提速
		float *p = pic.ptr<float>(i);
		for (int j = 0; j < col; j++)
		{
            // 若需要保存的數(shù)據(jù)是非nan值,則正常保存;若為nan值,則保存字符“nan”
			if (p[j] == p[j])
			{
				outfile << p[j] << (j == (col - 1) ? '\n' : '\t');
			}
			else {
				outfile << "nan" << (j == (col - 1) ? '\n' : '\t');
			}
			
		}
	}
	outfile.close();
}

C++測試代碼

#include<iostream>
#include<fstream>
#include<opencv2/opencv.hpp>
using namespace std;
void WritePicToExcel(string name, cv::Mat pic);
int main()
{
	cv::Mat pic = cv::Mat::zeros(1000, 1000, CV_32FC1);
	for (int i = 0; i < pic.rows; i++)
	{
		for (int j = 0; j < pic.cols; j++)
		{
			pic.at<float>(i, j) = rand() % 255;
		}
	}
    // 人為設(shè)置一個nan值檢驗(yàn)是否可以有效保存
	pic.at<float>(1, 2) = nan("");
    // 輸入的string為保存的文件名,函數(shù)其實(shí)還可以加點(diǎn)文件格式的判斷,有興趣的自己改進(jìn)下吧
	WritePicToExcel("test1.xls", pic);
	return 0;
}
void WritePicToExcel(string name, cv::Mat pic)
{
	CV_Assert(pic.type() == CV_32FC1);
	ofstream outfile(name);
	int row = pic.rows;
	int col = pic.cols;
	for (int i = 0; i < row; i++)
	{
		float *p = pic.ptr<float>(i);
		for (int j = 0; j < col; j++)
		{
			if (p[j] == p[j])
			{
				outfile << p[j] << (j == (col - 1) ? '\n' : '\t');
			}
			else {
				outfile << "nan" << (j == (col - 1) ? '\n' : '\t');
			}
			
		}
	}
	outfile.close();
}

測試效果

圖1 隨機(jī)生成的圖像矩陣

圖2 保存效果圖

如上圖所示,為了方便,我隨機(jī)生成了一個1000*1000的圖像矩陣,并定義了第二行第三列的點(diǎn)為nan值,保存效果如圖2所示,成功!

如果函數(shù)有什么可以改進(jìn)完善的地方,非常歡迎大家指出~

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論