【发布时间】: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