2015-11-06 726 views
2

我正在使用Visual Studio和OpenCV。我有一个简单的代码来检测关键点并计算两个图像的描述符。表达式:“(_Ptr_user&(_ BIG_ALLOCATION_ALIGNMENT - 1))== 0”&& 0

void extractfeatures::extractKeypoints(cv::Mat _frame, cv::Mat _object) 
{ 
    //Extract keypoints 
    cv::Ptr<cv::FeatureDetector> detector; 
    cv::Ptr<cv::AKAZE> akaze = cv::AKAZE::create(); 
    std::vector<cv::KeyPoint> object_keypoints, background_keypoints; 
    cv::Mat desc1, desc2; 
    akaze->detectAndCompute(_object, cv::noArray(), object_keypoints, desc1); 
    akaze->detectAndCompute(_frame, cv::noArray(), background_keypoints, desc2); 
} 

的代码工作正常,它几乎一样的人给OpenCV的Akaze文档中:http://docs.opencv.org/3.0-beta/doc/tutorials/features2d/akaze_matching/akaze_matching.html

然而,当失控的功能它给了我这个错误:

Expression: "(_Ptr_user&(_BIG_ALLOCATION_ALIGNMENT - 1)) ==0" && 0

预先感谢您!

+0

我也遇到同样的问题。我认为这主要与VS2015相关,它不会在VS2013中显示。你有类似的观察?你有没有得到解决方案? – ARK

回答

0

由于矢量的内存是有限的,所以关键点太多。 如果关键点大约是10000:

object_keypoints.reserve(10000); 
background_keypoints.reserve(10000) 
0

一旦我遇到这样的问题。事实证明,该计划没有链接正确的opencv的DLL。当我将正确的dll(如opencv_world310d.dll)移动到我的程序的Debug文件夹中时,此错误消失。

相关问题