我正在编写一个函数,该函数查找并返回提供给系统的任何图像的中心(它们大多是圆形对象。)
使用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(特别是在它使用的矢量文件中)时,Visual Studio引发未处理的异常,并且消息显示
Laser_Tracking.exe中0x5825AF78(opencv_core310.dll)的未处理异常:0xC0000005:访问冲突读取位置0xDDDDDDD9。
我目前正在使用Visual Studios 2019运行OpenCV。
我测试并找到您的问题。这似乎与OpenCV配置有关。我的环境也是VS2019和OpenCV 3.1.0
在链接器的配置中,我添加了opencv_world310.lib和opencv_world310d.lib。也就是说,我添加了该库的发行版和调试版,并且我在调试模式下运行,这可能对其他函数没有影响,但是对于findContours()函数来说有所不同,因此我更改了两个库,或者我们可以删除其中一个库,具体取决于您自己的模式。
当我们配置Visual Studio时,这是一个遗留的问题。由于没有报告错误,所以未发现问题。在这种情况下,我们需要养成良好的配置习惯。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句