我无法在 vector 中获取 OpenCV 中的类/结构,并在没有任何堆损坏的情况下让函数保持事件状态。每当我打开 native OpenCV 对象的 vector 时,垃圾收集期间就会出现可怕的 _crtIsValidHeapPointer 错误。
上下文:尝试使用 ORB 比较对象和场景图像中的匹配点。在 C++ 中使用 OpenCV 2.3.1。
代码示例:
vector< KeyPoint > objImageKeypoints;
Mat objImageDescriptors;
OrbFeatureDetector detector = orbFeatureDetector( 1000 );
detector.detect( objImage, objImageKeypoints );
... // There's more, but I've commented out the rest
}
在我通过 detect() 方法之后,就没有回头路了。之后,它仍然给我带来麻烦。
一旦我到达函数末尾,系统就会崩溃。我是否遗漏了什么,或者我是否通过使用 vector 犯下了 OpenCV 的一些主要错误?
最佳答案
我在将 Visual Studio 2012(版本 11)与最初仅为 2010(版本 10)构建的 OpenCV2.4.3 一起使用时遇到了这个问题。 我在版本 10 中使用 lib 和 dll。 比起我为 2012 年构建它,现在它可以在没有堆损坏错误的情况下工作。
P.S.:在它之前(当使用 built for version 10 时),我在 opencv 函数中使用之前调整了 vector 的大小。
关于c++ - OpenCV 与 std::vector 不兼容? (_crtIsValidHeapPointer 错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9107003/