gpt4 book ai didi

xml - 如何在 XML 文件中的同一元素名称中写入多个 Mats?

转载 作者:行者123 更新时间:2023-12-02 16:41:33 26 4
gpt4 key购买 nike

我有 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 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 将包含神经网络的训练样本集,在 Opencv 中使用 Visual Studio C++ 开发。

最佳答案

帧合并在一起,然后写入 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 文件。

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

关于xml - 如何在 XML 文件中的同一元素名称中写入多个 Mats?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18544842/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com