当我尝试调试我的项目时,我会在执行结束时得到Debug Assertion Failed
。你可以在下面看到它。
我认为这个问题与OpenCV的FAST函数有关,因为当我注释掉包含这个函数的行时,它运行正常。
这是我的代码:
#pragma once
#include <opencv2/core/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>
#include <iostream>
#include <string>
using namespace cv;
using namespace std;
int main()
{
string table[2] = { "background_2.jpg","foreground_2.jpg" };
Mat firstImage = imread(table[0], IMREAD_COLOR);
Mat secondImage = imread(table[1], IMREAD_COLOR);
Mat result;
subtract(firstImage, secondImage, result);
Mat resultGray, firstImageGray, secondImageGray;
cvtColor(firstImage, firstImageGray, COLOR_BGR2GRAY);
cvtColor(secondImage, secondImageGray, COLOR_BGR2GRAY);
cvtColor(result, resultGray, COLOR_BGR2GRAY);
Canny(firstImageGray, firstImageGray, 33, 100, 3);
Canny(secondImageGray, secondImageGray, 33, 100, 3);
Canny(resultGray, resultGray, 33, 100, 3);
vector <KeyPoint> keyPoints;
FAST(resultGray, keyPoints, 9, true);//Probably here is the problem.
Mat resultKeyPoints;
drawKeypoints(resultGray, keyPoints, resultKeyPoints, 156);
return 0;
}
我在Visual Studio 2015 Preview中构建我的项目。
当我点击“重试”以断开该断言时,我得到以下异常:
Unhandled exception at 0x00007FF851891B4B (ucrtbased.dll) in
OpenCVProject.exe: An invalid parameter was passed to a function that considers invalid parameters fatal.
这是来自VS的120行xmemory0文件。
答案 0 :(得分:2)
我找到了答案。我将项目Property Pages
中的Platform Toolset
从Visual Studio 2015 (v140)
更改为Visual Studio 2013 (v120)
。现在它工作正常。似乎问题不在FAST
函数中,但在这种情况下,我将VS 2015
与OpenCV 3.0
一起使用。 @drescherjm谢谢你的帮助我这样做。