如何在XML文件中使用相同元素名称写入多个Mat?

我有85张26*7的二进制图像,这些图像将用于训练系统。我试图在XML中将这些图像的每个Mat一个接一个地写入,并全部放在同一个元素名称*Training_set*中,如下所示:

<?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 fileif(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中开发的。


回答:

这些帧被合并在一起,然后写入XML文件。请参考链接 http://devblog.michalski.im/2012/05/18/combine-multiple-video-frames-into-one-using-opencv/

首先,我们创建一个Mat来存储所有图像,我称之为Merged_frame。

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

Merged_frame的大小取决于用于训练的图像大小和图像数量。我的x=26是因为图像是26*7…26列和7行。我们垂直地一个接一个地存储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);

我对每张图像都这样做,记得相应地更改Rect(x,y,width,height)参数。这将把图像存储在Merged_frame中找到的特定位置。

在存储每张图像后,我们可以将Merged_frame发送到XML文件中。

我达到了我需要的结果,希望这对像我这样的图像处理新手有所帮助。:) 祝好运!!!

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注