Opencv中如何判断某个文件不存在?

来源:互联网 发布:青岛seo关键词报价 编辑:程序博客网 时间:2024/06/06 14:48

调试程序时发现一个错误:在运行过程中,删除xml文件,然后再入库,关闭程序,启动时初始化失败。原因:运行时,会把XML内容保存在内存中,如果删除XML文件,内存变量没有情况,导致图片对象个数统计不准确,然后再次启动初始化时无法准确判断循环结束。


解决方法:想办法判断xml文件被不存在。网上搜了一圈,没有找到很好的方案。仔细分析和跟踪代码时,发现如果文件不存在,并且打开方式是CV_STORAGE_READ时,返回空指针,如果是其他方式,则无法判断。下面代码就是判断后面代码要操作的文件是否被破坏,如果是,则清空相关变量,以免数据不一致。

CvFileStorage *fsCateInfo = cvOpenFileStorage(this->CateFileName, 0, CV_STORAGE_READ);//"CateInfo.xml"
   if(!fsCateInfo)
 {
  //可能是数据文件被删除或破坏,必须清空相关统计信息
  this->CateInfoList.clear();
  this->nObjectCnt = 0;

  this->DCTMatList.clear();
  this->SimInfoList.clear();
 }
 cvReleaseFileStorage( &fsCateInfo );

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/EffectiveAgui/archive/2010/08/03/5784625.aspx