【问题标题】:OpenCV throwing Unhandled Exception when using the findContours function in opencv_core310.dll在 opencv_core310.dll 中使用 findContours 函数时,OpenCV 抛出未处理的异常
【发布时间】:2020-02-21 06:14:35
【问题描述】:

我正在编写一个函数,用于查找并返回给定系统的任何图像的中心(它们大多是圆形对象。)

使用 OpenCV3.10 运行 findContours 方法时,该函数在向量类中抛出错误。这是我的代码:

cv::Mat image = next_image(cam);
cv::Mat gray; cv::Mat thresh; cv::Mat conv;

cv::Mat canny_output; cv::Mat nImg;
std::vector<std::vector<cv::Point>> contours;
std::vector<cv::Vec4i> hierarchy;
//threshold and contour the image

cv::cvtColor(image, conv, cv::COLOR_GRAY2RGB);

cv::cvtColor(conv, gray, CV_BGR2GRAY);
cv::blur(gray, gray, cv::Size(5, 5));
cv::threshold(gray, thresh, 60, 355, cv::THRESH_BINARY);
cv::findContours(thresh, contours, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_SIMPLE);

Visual Studio 在遇到 findContours(特别是在它使用的矢量文件中)并且消息显示时抛出未处理的异常

Laser_Tracking.exe 中 0x5825AF78 (opencv_core310.dll) 处的未处理异常:0xC0000005:访问冲突读取位置 0xDDDDDDD9。

我目前正在使用 Visual Studios 2019 运行 OpenCV。

【问题讨论】:

  • 调试或发布版本?使用哪个版本的 Visual Studio 构建 OpenCV 二进制文件?
  • 不幸的是,我现在没有一个正在运行的 OpenCV 3.1.0 开发环境,只是因为它是之前的那一行,而且我已经看到 OpenCV 的一些非常愚蠢的错误:在 cv::threshold(gray, thresh, 60, 355, cv::THRESH_BINARY) ,我猜355 是一个错字,应该是255!?正如我所说,这似乎是一个愚蠢的想法,但只是为了理智,我会解决这个问题并再次测试。顺便说一句,使用 OpenCV 3.4.0(调试)、4.0.0 或 4.1.0(调试/发布)无法重现错误。
  • @HansHirse 我把它改成了这个值,并没有真正改变。

标签: c++ visual-studio opencv exception image-processing


【解决方案1】:

我测试并发现了您的问题。这似乎是 OpenCV 配置的问题。我的环境也是VS2019和OpenCV 3.1.0

在Linker的配置中,我添加了opencv_world310.lib和opencv_world310d.lib。也就是说,我添加了库的release和debug版本,并且我是在debug模式下运行的,可能对其他函数没有影响,但是findContours()函数就不一样了,所以我改变了顺序两个库,或者我们可以删除其中一个库,这取决于您自己的模式。

这是我们配置 Visual Studio 时遗留的问题。由于没有报错,所以没有发现问题。在这种情况下,我们需要养成良好的配置习惯。

【讨论】:

  • 我还在学习很多关于配置的知识,但你的建议似乎对 opencv_world 库有效。但是,在 findContours 内部,我现在有 Unhandled exception at 0x772ECAA2 (ucrtbase.dll) in Laser_Tracking.exe: An invalid parameter was passed to a function that considers invalid parameters fatal.ucrtbase.dll 是一个 Windows 库,我很困惑这是如何发生的。
【解决方案2】:

我真的不知道发生了什么,但就我而言,我只是将函数几行进一步移动,未处理的异常已经消失,当我返回时,错误再次发生。

【讨论】:

    猜你喜欢
    • 2018-05-04
    • 1970-01-01
    • 2017-05-09
    • 1970-01-01
    • 2012-01-28
    • 1970-01-01
    • 2013-07-24
    • 2011-10-10
    • 2013-06-08
    相关资源
    最近更新 更多