我正在尝试使用OpenCV从xml文件中读取数据。数据来自一段视频记录。
我想要做的是编写一个" do - while“语句,基本上就是说”在没有来自该帧的数据时什么也不做“。
我尝试在while语句中使用FileNode::empty(),但我认为我没有正确理解语法,因为我一直收到错误消息"Call to non-static member function keep object argument“。
我对编程完全是个新手,所以我真的不知道我应该如何正确地构造语句。我已经阅读了OpenCV的教程和参考手册,但它没有为我理清任何东西。
下面是从xml文件的最开始开始的例外:
<frame_00000>
<pose type_id="opencv-matrix">
<rows>0</rows>
<cols>0</cols>
<dt>u</dt>
<data></data></pose>
<expertCode>3</expertCode>
<autoCode>-1</autoCode></frame_00000>
<frame_00001>
<pose type_id="opencv-matrix">
<rows>0</rows>
<cols>0</cols>
<dt>u</dt>
<data></data></pose>
<expertCode>0</expertCode>
<autoCode>-1</autoCode></frame_00001>
<frame_00002>
<pose type_id="opencv-matrix">
<rows>6</rows>
<cols>1</cols>
<dt>d</dt>
<data>
9.6603986167822176e-02 2.7534827334102827e-02
-7.9839974858475181e-03 2.9772357539313782e+02
2.6446663460538508e+02 1.5645098067258549e+00</data></pose>
<expertCode>0</expertCode>
<autoCode>0</autoCode></frame_00002>基本上,我希望它做的是查看每个帧节点,确定其中是否有任何数据,如果没有则忽略它们。
任何有关FileNode::empty()语句语法的技巧都将不胜感激。
编辑:
以下是我到目前为止基于用于打开XML文件的教程编写的代码
#include "opencv2/opencv.hpp"
#include <fstream>
using namespace cv;
int main()
{
FileStorage fs("output.xml", FileStorage::READ);
do {
;
} while ();
}发布于 2012-12-12 07:57:04
opencv XML API非常简单,只需在磁盘上/从磁盘上获取cv::Mat即可。如果你想做更多的事情,我会使用常规的XML库。
但是大多数XML解析器并不是为读取动态变化的文件而设计的,它们通常会打开文件并构建一个树结构。
您是否可以继续尝试打开该文件,检查它是否已更改,然后关闭它,等待,然后重新打开?
https://stackoverflow.com/questions/13814017
复制相似问题