关于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 ++;
    }
}
相关推荐
算家计算1 分钟前
不止高刷!苹果发布会AI功能全面解析:实时翻译、健康监测重磅升级
人工智能·apple·资讯
m0_6770343514 分钟前
机器学习-异常检测
人工智能·深度学习·机器学习
张子夜 iiii32 分钟前
实战项目-----在图片 hua.png 中,用红色画出花的外部轮廓,用绿色画出其简化轮廓(ε=周长×0.005),并在同一窗口显示
人工智能·pytorch·python·opencv·计算机视觉
胡耀超1 小时前
3.Python高级数据结构与文本处理
服务器·数据结构·人工智能·windows·python·大模型
索迪迈科技1 小时前
GPS汽车限速器有哪些功能?主要运用在哪里?
人工智能·行车记录仪·车辆安全·监控管理·gps定位
Niuguangshuo1 小时前
深度学习基本模块:Conv2D 二维卷积层
人工智能·深度学习
b***25111 小时前
深圳比斯特|多维度分选:圆柱电池品质管控的自动化解决方案
大数据·人工智能
金井PRATHAMA2 小时前
AI赋能训诂学:解码古籍智能新纪元
人工智能·自然语言处理·知识图谱
练习两年半的工程师2 小时前
AWS TechFest 2025: 智能体企业级开发流程、Strands Agents
人工智能·云计算·aws
Hello123网站2 小时前
Whismer-你的定制化AI问答助手
人工智能·chatgpt·ai工具