关于OpenCV程序运行结束时的异常中断

2024-03-01 05:18

本文主要是介绍关于OpenCV程序运行结束时的异常中断,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2019年4月11日:由于本人最近需要用MFC开发,所以看了孙鑫的书(VC++深入详解),第92页有一句话可能与这个异常有关,所以要记录一下!原文如下:

C++窗口类对象和窗口并不是一回事,它们之间唯一的关系是C++窗口类对象内部定义了一个窗口的句柄变量,保存了与这个C++窗口类对象相关的那个窗口的句柄。窗口销毁时,与之对应的C++窗口类对象销毁与否,要看其生命周期是否结束。但C++窗口类对象销毁时,与之相关的窗口也将销毁。

由于水平有限,并不熟悉C++,只能做出如下猜测:当如我们手动关闭窗口相当于窗口的句柄被销毁了(句柄的作用或者说生命结束了),但是这个窗口的对象的生命周期并没有结束。所以当程序再次访问对象时,找不到对应的窗口句柄,就出现了异常。

本次就记录这些,如果以后有新的发现再更新!

哎,能力有限,这个问题一直放在心上,强迫症表示要被逼死了。只能走一步看一步了。。。


补充:本人最近刚买了一台全新的电脑。重新配置OpenCV3,使用的是VS2017,同样遇到了以下情况,使用的解决方法依旧是在程序结束时关闭所有的窗口,即使用destroyAllWindows()解决了问题。可能此方法不适用所有人,但是试一试总是好的,由于最近几乎不使用OpenCV,具体原因可能要以后找出来。如果有知道的朋友欢迎回复哦!


在使用OpenCV3和vs 2015过程中:

当调用namedWindow()或者imshow()函数之后,不进行手动释放,在程序运行结束时,会出现下面这些异常中断:

1.以下为waitKey(1000)与waitKey(0)之后的结果:

0x00007FFAD7990DC0 (ntdll.dll)处(位于 test.exe 中)引发的异常: 0xC0000005: 读取位置 0x0000000000000010 时发生访问冲突。

程序“[4180] test.exe”已退出,返回值为 0 (0x0)。

 

2.当手动关闭控制台后的结果:

线程 0x1874 已退出,返回值为 1 (0x1)。

线程 0x3058 已退出,返回值为 0 (0x0)。

线程 0x2e44 已退出,返回值为 1 (0x1)。

线程 0x17c4 已退出,返回值为 1 (0x1)。

线程 0x2414 已退出,返回值为 1 (0x1)。

线程 0x734 已退出,返回值为 0 (0x0)。

线程 0x2834 已退出,返回值为 -1073741510 (0xc000013a)。

线程 0x31bc 已退出,返回值为 -1073741510 (0xc000013a)。

线程 0x1190 已退出,返回值为 -1073741510 (0xc000013a)。

线程 0x2c38 已退出,返回值为 -1073741510 (0xc000013a)。

线程 0x3cec 已退出,返回值为 -1073741510 (0xc000013a)。

线程 0x3eb4 已退出,返回值为 -1073741510 (0xc000013a)。

线程 0x3c90 已退出,返回值为 -1073741510 (0xc000013a)。

线程 0x3300 已退出,返回值为 -1073741510 (0xc000013a)。

程序“[5168] test.exe”已退出,返回值为 -1073741510 (0xc000013a)。

 

以上两种情况程序都不是正常结束!

3.当在waitKey(1000)之后加入destroyAllWindows()函数后:

线程 0x3c3c 已退出,返回值为 0 (0x0)。

线程 0xf84 已退出,返回值为 0 (0x0)。

线程 0x2754 已退出,返回值为 0 (0x0)。

线程 0x1c68 已退出,返回值为 0 (0x0)。

线程 0xadc 已退出,返回值为 0 (0x0)。

线程 0x11e8 已退出,返回值为 0 (0x0)。

线程 0x2ce4 已退出,返回值为 0 (0x0)。

程序“[9244] test.exe”已退出,返回值为 0 (0x0)。

程序正常退出!

 

4.值得注意的是,不管在那种情况下,直接关闭控制台来退出程序,程序很可能会返回一个不是0的值。

这篇关于关于OpenCV程序运行结束时的异常中断的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/761323

相关文章

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

C/C++中OpenCV 矩阵运算的实现

《C/C++中OpenCV矩阵运算的实现》本文主要介绍了C/C++中OpenCV矩阵运算的实现,包括基本算术运算(标量与矩阵)、矩阵乘法、转置、逆矩阵、行列式、迹、范数等操作,感兴趣的可以了解一下... 目录矩阵的创建与初始化创建矩阵访问矩阵元素基本的算术运算 ➕➖✖️➗矩阵与标量运算矩阵与矩阵运算 (逐元

C/C++的OpenCV 进行图像梯度提取的几种实现

《C/C++的OpenCV进行图像梯度提取的几种实现》本文主要介绍了C/C++的OpenCV进行图像梯度提取的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录预www.chinasem.cn备知识1. 图像加载与预处理2. Sobel 算子计算 X 和 Y

C/C++和OpenCV实现调用摄像头

《C/C++和OpenCV实现调用摄像头》本文主要介绍了C/C++和OpenCV实现调用摄像头,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录准备工作1. 打开摄像头2. 读取视频帧3. 显示视频帧4. 释放资源5. 获取和设置摄像头属性

c/c++的opencv图像金字塔缩放实现

《c/c++的opencv图像金字塔缩放实现》本文主要介绍了c/c++的opencv图像金字塔缩放实现,通过对原始图像进行连续的下采样或上采样操作,生成一系列不同分辨率的图像,具有一定的参考价值,感兴... 目录图像金字塔简介图像下采样 (cv::pyrDown)图像上采样 (cv::pyrUp)C++ O

c/c++的opencv实现图片膨胀

《c/c++的opencv实现图片膨胀》图像膨胀是形态学操作,通过结构元素扩张亮区填充孔洞、连接断开部分、加粗物体,OpenCV的cv::dilate函数实现该操作,本文就来介绍一下opencv图片... 目录什么是图像膨胀?结构元素 (KerChina编程nel)OpenCV 中的 cv::dilate() 函

qtcreater配置opencv遇到的坑及实践记录

《qtcreater配置opencv遇到的坑及实践记录》我配置opencv不管是按照网上的教程还是deepseek发现都有些问题,下面是我的配置方法以及实践成功的心得,感兴趣的朋友跟随小编一起看看吧... 目录电脑环境下载环境变量配置qmake加入外部库测试配置我配置opencv不管是按照网上的教程还是de

python+OpenCV反投影图像的实现示例详解

《python+OpenCV反投影图像的实现示例详解》:本文主要介绍python+OpenCV反投影图像的实现示例详解,本文通过实例代码图文并茂的形式给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前言二、什么是反投影图像三、反投影图像的概念四、反向投影的工作原理一、利用反向投影backproj

在PyCharm中安装PyTorch、torchvision和OpenCV详解

《在PyCharm中安装PyTorch、torchvision和OpenCV详解》:本文主要介绍在PyCharm中安装PyTorch、torchvision和OpenCV方式,具有很好的参考价值,... 目录PyCharm安装PyTorch、torchvision和OpenCV安装python安装PyTor

openCV中KNN算法的实现

《openCV中KNN算法的实现》KNN算法是一种简单且常用的分类算法,本文主要介绍了openCV中KNN算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录KNN算法流程使用OpenCV实现KNNOpenCV 是一个开源的跨平台计算机视觉库,它提供了各