OpenCV嵌入式移植后XML读取问题及解决

1、OpenCV在进行嵌入式移植后需要读取XML文件。

一开始利用最常用程序读取:

cv::FileStorage fs(xml_filename, cv::FileStorage::READ);
    if ( !fs.isOpened() )
    {

}

fs["QMatrix"] >> m_Calib_Mat_Q;
    fs["remapX1"] >> m_Calib_Mat_Remap_X_L;
    fs["remapY1"] >> m_Calib_Mat_Remap_Y_L;
    fs["remapX2"] >> m_Calib_Mat_Remap_X_R;
    fs["remapY2"] >> m_Calib_Mat_Remap_Y_R;

出错无法读取。

经过一系列过程换为:

CvMat *readbyname,*m_Calib_Mat_Remap_X_L1,*m_Calib_Mat_Remap_Y_L1,*m_Calib_Mat_Remap_X_R1,*m_Calib_Mat_Remap_Y_R1; 


 CvFileNode *mat_node;//文件结点   
    CvFileStorage *fs_read=NULL;//文件存储 
 
 fprintf(stderr, "1115");
 
    fs_read=cvOpenFileStorage("matX1.xml",0,CV_STORAGE_READ);   
    readbyname = (CvMat *)cvReadByName(fs_read,NULL,"matX1",NULL);   
    mat_node = cvGetFileNodeByName(fs_read,NULL,"matX1");   
    m_Calib_Mat_Remap_X_L1 = (CvMat *)cvRead(fs_read,mat_node);

cvReleaseFileStorage(&fs_read);   
    cvReleaseMat(&m_Calib_Mat_Remap_X_L1);   
    cvReleaseMat(&m_Calib_Mat_Remap_Y_L1); 
    cvReleaseMat(&m_Calib_Mat_Remap_X_R1);
    cvReleaseMat(&m_Calib_Mat_Remap_Y_R1); 
    cvReleaseMat(&readbyname);   

可以成功读取。

过程中,一开始出错可能是XML内容本身有问题,造成无法读取,可以将所要的数据分开多个XML数据,分开读取,这样可以避免多个数据的读取错误。

--------------------------------------分割线 --------------------------------------

Ubuntu Linux下安装OpenCV2.4.1所需包

Ubuntu 12.04 安装 OpenCV2.4.2

CentOS下OpenCV无法读取视频文件

Ubuntu 12.04下安装OpenCV 2.4.5总结

Ubuntu 10.04中安装OpenCv2.1九步曲

基于QT和OpenCV的人脸识别系统

--------------------------------------分割线 --------------------------------------

OpenCV的详细介绍请点这里
OpenCV的下载地址请点这里

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/5220e343a32221682f820df626ae029c.html