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的下載地址:請點這裡