1. 程式人生 > >OpenCV對csv檔案的讀寫操作

OpenCV對csv檔案的讀寫操作

在用opencv進行圖片操作時,經常涉及到對矩陣的操作。由於本人常需要把矩陣進行本地儲存和讀取,如果直接用檔案操作會比較麻煩,本文總結了以下對csv檔案進行讀寫的操作。

1.讀取CVS檔案

CvMLData mlData;
mlData.read_csv("test.csv");//讀取csv檔案
cv::Mat data= cv::Mat(mlData.get_values(),true);

通過以上三行程式碼就可以把cvs檔案中的矩陣讀取到data矩陣中。注意,最後一行程式碼用cv::Mat()就行轉換是因為CvMLData::get_values()返回的是CvMat型別的矩陣。

2.儲存cv::Mat矩陣為csv檔案

opencv可以通過CvMLData來讀取csv檔案,但是遺憾的是opencv不能直接把Mat矩陣儲存為csv檔案。鑑於此本人自己寫了一個儲存Mat矩陣為csv檔案的函式。程式碼如下

void saveMat(cv::Mat inputMat,char* filename)
{
    FILE* fpt = fopen(filename,"w");
    int rows = inputMat.rows;
    int clos = inputMat.cols;
    for (int i = 0; i < rows;i++)
    {
        for
(int j = 0;j<clos;j++) { if (j < clos-1) fprintf(fpt,"%f,",inputMat.at<float>(i,j)); else fprintf(fpt,"%f\n",inputMat.at<float>(i,j)); } } fclose(fpt); }

該函式有兩個引數,一個是將儲存的Mat矩陣,一個是儲存的檔名。如要儲存上面的data矩陣為data.csv檔案,則可以使用saveMat(data,”data.csv”)。

通過以上兩種方式就可以輕鬆對opencv中的Mat矩陣進行讀取和儲存了。