opencv xml读写

来源:互联网 发布:大数据来源于 编辑:程序博客网 时间:2024/05/17 04:53
#include <opencv2/core/core.hpp>#include <iostream>#include <string>#include <time.h> using namespace cv;using namespace std;int main(int argc, char** argv) {if (0)//write{FileStorage fs("test.xml", FileStorage::WRITE);  fs << "frameCount" << 5;  time_t rawtime; time(&rawtime);  fs << "calibrationDate" << asctime(localtime(&rawtime));  Mat cameraMatrix = (Mat_<double>(3,3) << 1000, 0, 320, 0, 1000, 240, 0, 0, 1);  Mat distCoeffs = (Mat_<double>(5,1) << 0.1, 0.01, -0.001, 0, 0);  fs << "cameraMatrix" << cameraMatrix << "distCoeffs" << distCoeffs;  fs << "features" << "[";  for( int i = 0; i < 3; i++ )  {  int x = rand() % 640;  int y = rand() % 480;  uchar lbp = rand() % 256;  fs << "{:" << "x" << x << "y" << y << "lbp" << "[:";  for( int j = 0; j < 8; j++ )  fs << ((lbp >> j) & 1);  fs << "]" << "}";  }  fs << "]";  fs.release();   }else{FileStorage fs2("test.xml", FileStorage::READ);// first method: use (type) operator on FileNode.int frameCount = (int)fs2["frameCount"];std::string date;// second method: use FileNode::operator >>fs2["calibrationDate"] >> date;Mat cameraMatrix2, distCoeffs2;fs2["cameraMatrix"] >> cameraMatrix2;fs2["distCoeffs"] >> distCoeffs2;cout << "frameCount: " << frameCount << endl << "calibration date: " << date << endl << "camera matrix: " << cameraMatrix2 << endl << "distortion coeffs: " << distCoeffs2 << endl;FileNode features = fs2["features"];FileNodeIterator it = features.begin(), it_end = features.end();int idx = 0;std::vector<uchar> lbpval;// iterate through a sequence using FileNodeIteratorfor( ; it != it_end; ++it, idx++ ){cout << "feature #" << idx << ": ";cout << "x=" << (int)(*it)["x"] << ", y=" << (int)(*it)["y"] << ", lbp: (";// you can also easily read numerical arrays using FileNode >> std::vector operator.(*it)["lbp"] >> lbpval;for( int i = 0; i < (int)lbpval.size(); i++ )cout << " " << (int)lbpval[i];cout << ")" << endl;}fs2.release();}return 0; }

0 0
原创粉丝点击