我是初学者使用opencv,并且在opencv中使用FAST功能检测器来简单地获取图像的关键点。
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/features2d.hpp"
std::vector<cv::KeyPoint> kp;
int main()
{
cv::Mat img = cv::imread("im.jpg", 0);
cv::FAST(img, kp, 100, true);
cv::Mat img2;
cv::drawKeypoints(img, kp, img2 , CV_RGB(255, 0, 0));
cv::imshow("Display", img2);
cv::waitKey(0);
cv::destroyWindow("Display");
return 0;
}
但是在调试代码时(Debug模式): 我发现向量kp(作为关键点向量传递)到FAST()中的大小(kp = {size = 658812287755660302})是不可能的。但是生成表示正确关键点的图像。调试结束时会出现上述访问冲突错误消息。
在发布模式下: 代码运行正常,首先显示图像中的关键点。在图像窗口关闭时,程序崩溃。调试时,kp的大小合理(kp = {size = 427})。
当代码在调试模式下运行而没有调试时,会弹出一个应用程序错误,指出无法读取0xffffffff的内存。
调用堆栈如here所示,这对我没有任何意义。
我做错了什么?它与我初始化矢量或其他东西的方式有关吗?
答案 0 :(得分:0)
我无法使用自己的图片或使用您提供的图片重现此问题。因此,我必须得出结论,您的构建环境存在问题。