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数据,分开读取,这样可以避免多个数据的读取错误。 ![]() (编辑:我爱故事小小网_铜陵站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |