0

我有85 26 * 7二進制圖像,將用於訓練系統。我試着去寫這些圖像中一個接一個XML之後的每個墊,都是一樣的元素名稱* Training_set *爲這樣的範圍內: -如何在XML文件中的相同元素名稱中編寫多個Mats?

<?xml version="1.0"?> 
<opencv_storage> 
<Training_set type_id="opencv-matrix"> 
    Mat1 values 
    Mat2 values 
    Mat3 values 
    ...... 
    Mat85 values 
</Training_set > 
</opencv_storage> 

使用下面的代碼: -

FileStorage fs("Samples.xml", FileStorage::WRITE); 

// Check if we actually created the file 
if(fs.isOpened()) 
{ 
     IplImage *img = cvLoadImage("eye1.bmp"); 
     Mat imgg=cvarrToMat(img); 
     fs <<"Training_set"<< imgg; 

     IplImage *img2 = cvLoadImage("eye2.bmp"); 
     Mat imgg2=cvarrToMat(img2); 
     fs <<"Trainging_set"<<imgg2; 

} 

目前,我得到: -

<?xml version="1.0"?> 
    <opencv_storage> 
    <Training_set type_id="opencv-matrix"> 
     Mat1 values 
    </Training_set > 
    <Training_set type_id="opencv-matrix"> 
     Mat2 values 
    </Training_set > 
    </opencv_storage> 

正如你可以看到他們被分配到相同的元素名稱,但分別。這不是我想達到什麼。如何在同一元素名稱中將所有Mat值寫入單批次中。

該XML將包含使用Visual Studio C++在Opencv中開發的神經網絡訓練樣本集。

+0

保存在XML文件中的輸出應該類似於https://raw.github.com/MasteringOpenCV/code/master/Chapter5_NumberPlateRecognition/OCR.xml中的輸出 – Sade

回答

0

的幀合併在一起,然後寫入XML file.Refer鏈接http://devblog.michalski.im/2012/05/18/combine-multiple-video-frames-into-one-using-opencv/

首先,我們創建存儲的所有圖像的墊子,在這裏我把它叫做Merged_frame。

Mat Merged_frame =Mat(Size(26,595), CV_8UC3); 

Merged_frame的大小取決於我的圖像用於培訓的規模和images.My的X = 26的號碼,因爲圖像是26 * 7 ... 26周的cols和7個rows.We是垂直存儲85個圖像,因此行數將爲7 * 85。

的代碼片斷我開發合併我的圖片如下: -

IplImage *img = cvLoadImage("X1.bmp"); 
Mat im=cvarrToMat(img); 
roi = Mat(Merged_frame, Rect(0,0,26,7)); //Sets region of interest 
im.copyTo(roi); 

我這樣做是爲每個圖像,記得要改變矩形(X,Y,寬度,高度)參數accordingly.This會將圖像存儲在Merged_frame中的特定位置。

存儲完每張圖片後,我們可以將Merged_frame發送到XML文件。

我實現了我所需要的結果,並希望這可以幫助像我這樣的圖像處理新手。 :) gudluk !!!

相關問題