歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> OpenCV嵌入式移植後XML讀取問題及解決

OpenCV嵌入式移植後XML讀取問題及解決

日期:2017/3/1 9:40:25   编辑:Linux編程

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所需包 http://www.linuxidc.com/Linux/2012-08/68184.htm

Ubuntu 12.04 安裝 OpenCV2.4.2 http://www.linuxidc.com/Linux/2012-09/70158.htm

CentOS下OpenCV無法讀取視頻文件 http://www.linuxidc.com/Linux/2011-07/39295.htm

Ubuntu 12.04下安裝OpenCV 2.4.5總結 http://www.linuxidc.com/Linux/2013-06/86704.htm

Ubuntu 10.04中安裝OpenCv2.1九步曲 http://www.linuxidc.com/Linux/2010-09/28678.htm

基於QT和OpenCV的人臉識別系統 http://www.linuxidc.com/Linux/2011-11/47806.htm

--------------------------------------分割線 --------------------------------------

OpenCV的詳細介紹:請點這裡
OpenCV的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved