关于OpenCV中 CV_Assert() 的使用引起程序中止/崩溃问题

CV_Assert() 的作用是:若括号中的表达式值为 false ,则返回一个错误信息,并终止程序执行。

但是 CV_Assert()assert 不同,CV_Assert() 会通过异常抛出,所以如果使用 CV_Assert(),可以通过捕获异常而不是程序崩溃,而 assert 会直接导致程序崩溃。当然如果你没有捕获这个异常,也同样会引起崩溃。

参考文章:CV_Assert和assert的区别


简单通过代码测试一下:

首先是 assert 的使用:
如图所示,直接使用 assert 判定引发了程序的崩溃,也捕获不到异常。

然后直接使用 CV_Assert() 也是同样的效果,引起了程序的崩溃。
那么用异常捕获试一下:
程序是正常运行的,抛出的异常并没有引起程序的崩溃。

测试代码:

cpp 复制代码
#include <iostream>
#include <assert.h>
#include <exception>
#include "opencv2/highgui.hpp"
#include "opencv2/core/core.hpp"
#include <opencv2/core.hpp>
#include <ros/ros.h>

int main()
{
    int i = 0;
    while(1){
        // 1. assert
        // assert(1 > 2);

        // try {
        //     assert(1 > 2);
        // } catch (cv::Exception& e) {
        //     std::cout << e.what() << std::endl;
        // }

        // 2. CV_Assert
        // CV_Assert(1 > 2);

        try {
            CV_Assert(1 > 2);
        } catch (cv::Exception& e) {
            std::cout << e.what() << std::endl;
        }

        sleep(1);
        std::cout << i << std::endl;
        i ++;
    }
}
相关推荐
扉间7981 小时前
Transformer 核心概念转化为夏日生活类比
人工智能·transformer
要努力啊啊啊4 小时前
YOLOv1 技术详解:正负样本划分与置信度设计
人工智能·深度学习·yolo·计算机视觉·目标跟踪
vlln5 小时前
【论文解读】OmegaPRM:MCTS驱动的自动化过程监督,赋能LLM数学推理新高度
人工智能·深度学习·神经网络·搜索引擎·transformer
sky丶Mamba5 小时前
如何编写高效的Prompt:从入门到精通
人工智能·prompt
chilavert3186 小时前
深入剖析AI大模型:Prompt 开发工具与Python API 调用与技术融合
人工智能·python·prompt
科技林总7 小时前
支持向量机:在混沌中划出最强边界
人工智能
陈佬昔没带相机7 小时前
基于 open-webui 搭建企业级知识库
人工智能·ollama·deepseek
Mallow Flowers8 小时前
Python训练营-Day31-文件的拆分和使用
开发语言·人工智能·python·算法·机器学习
AntBlack9 小时前
Python : AI 太牛了 ,撸了两个 Markdown 阅读器 ,谈谈使用感受
前端·人工智能·后端
leo__5209 小时前
matlab实现非线性Granger因果检验
人工智能·算法·matlab