歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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所需包 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