我正在使用Visual Studio和OpenCV。我有一个简单的代码,可以检测关键点并计算两个图像的描述符。
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
但是,当它退出该功能时,它会给我这个错误:
表达式:“(_Ptr_user&amp;(_ BIG_ALLOCATION_ALIGNMENT - 1))== 0”&amp;&amp; 0
提前谢谢!
答案 0 :(得分:0)
因为向量的内存有限,所以关键点太多了。 如果关键点大约是10000:
object_keypoints.reserve(10000);
background_keypoints.reserve(10000)
答案 1 :(得分:0)
一旦遇到这样的问题。原来,该程序没有链接正确的opencv的DLL。当我将正确的dll(例如opencv_world310d.dll)移动到我程序的Debug文件夹时,此错误消失了。