打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
OpenCV异常处理机制

很多函数,都会对参数的有效性进行判断,不符合要求,直接弹对话框,然后程序崩溃,逼得你不得不正确调用他。这个属于编程的逻辑错误,就像assert一样,用于排除编码错误,这和业务错误处理的层次是不同的。

 

        一般,我们仿照这种模式,如下

 

 

  1. int TestCvError( IplImage *pImgGray, int iNum)    
  2. {    
  3.      CV_FUNCNAME( "TestCvError" );      
  4.     __BEGIN__;    
  5.     if (iNum <= 1 )    
  6.         CV_ERROR(CV_StsOutOfRange, "参数iNum必须大于1");    
  7.     if( !pImgGray )    
  8.         CV_ERROR( CV_StsNullPtr, "Null pointer to pImgGray" );    
  9.     if( pImgGray->depth != IPL_DEPTH_8U && pImgGray->nChannels != 1 )    
  10.         CV_ERROR( CV_StsUnsupportedFormat, "Only 8-bit grayscale images are supported" );    
  11.      
  12.  //函数主要实现部分    
  13.     __END__;    
  14.     return 0;    
  15. }    
 

 

如果不想这么麻烦,直接用OPENCV_ASSERT是一样的。比如:

 

OPENCV_ASSERT(pImgGray != NULL, "TestCvError", "Null pointer to pImgGray");

 

问题是,有时候产品未必能够很好的测试,总有bug,而且要交付使用,总不能让用户面对错误弹出窗口吧,这时候在程序的初始化部分,写入如下代码:

  1. #ifdef _DEBUG  
  2.     cvSetErrMode(CV_ErrModeLeaf);  
  3. #else  
  4.     cvSetErrMode(CV_ErrModeSilent);  
  5. #endif  
 

在release版本里面将gui报错禁用掉。这时候,如果内存越界、参数错误,程序异常退出,看门狗起作用。

 

这些机制,查看cxerror.h/cxerror.cpp就能明白了。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
摄影爱好者玩编程:利用Python和OpenCV打造专业级长时曝光摄影图
OpenCV编程案例:混合高斯模型(CvGaussBGModel)使用案例 - OpenC...
linux下的OpenCV安装&学习笔记(修订版,解决无法打开视频文件问题)
python+opencv读入和显示图片
VS2019+Python+OpenCV配置
OpenCV学习笔记(13)基于OpenCV2.1的MFC双目视觉平台构建
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服