加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱故事小小网_铜陵站长网 (http://www.0562zz.com/)- 视频终端、云渲染、应用安全、数据安全、安全管理!
当前位置: 首页 > 教程 > 正文

OpenCV嵌入式移植后XML读取问题及处理

发布时间:2021-12-11 12:47:03 所属栏目:教程 来源:互联网
导读: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
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数据,分开读取,这样可以避免多个数据的读取错误。

(编辑:我爱故事小小网_铜陵站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读