VS2010 和 OpenCV:变量周围的堆栈已损坏
Posted
技术标签:
【中文标题】VS2010 和 OpenCV:变量周围的堆栈已损坏【英文标题】:VS2010 and OpenCV: Stack around a variable was corrupted 【发布时间】:2012-09-14 02:56:54 【问题描述】:以下代码在 Visual Studio 2010 中运行时出现以下错误:Run-Time Check Failure #2 - Stack around the variable 'keypoints' was corrupted.
#include<iostream>
#include<fstream>
#include<cv.h>
#include<highgui.h>
#include<opencv2/nonfree/features2d.hpp>
using namespace std;
using namespace cv;
int main(int argc, char *argv[])
Mat image = imread("C:/IMAGE.JPG");
SiftFeatureDetector detector;
vector<KeyPoint> keypoints;
detector.detect(image, keypoints);
return 0;
知道我做错了什么吗?
【问题讨论】:
【参考方案1】:这段代码:
Mat image = imread("C:/IMAGE.JPG");
可能会失败。在将 image
作为参数传递给其他函数之前,您需要确保已成功加载:
if (!image.data )
cout << "Could not load image" << endl ;
return -1;
如果imread()
失败并且该文件存在于该位置,您可能需要使用另一个斜线并将其转义:
Mat image = imread("C:\\IMAGE.JPG");
如果图片加载成功,崩溃依旧,尝试将图片加载为灰度:
Mat image = imread("C:\\IMAGE.JPG", 0);
【讨论】:
另外,请确保您有阅读C:/IMAGE.JPG
的权限。
imread
成功完成(我已将/
替换为\`) but i still have the problem. i debugged the program and the stack corruption error occurs right at the end of the program... seem like it is happening when
keypoints` 向量正在清理中。【参考方案2】:
原来我需要使用 Visual Studio 2010 编译 OpenCV
库,而不仅仅是链接到预编译的 dll
s 等。现在一切都很好。
【讨论】:
你是怎么想出来的?您始终可以使用 OpenCV 提供的预编译库以上是关于VS2010 和 OpenCV:变量周围的堆栈已损坏的主要内容,如果未能解决你的问题,请参考以下文章