0

我有以下代码,运行良好:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/features2d/features2d.hpp>

using namespace std;
using namespace cv;

void main() {

    bool running = true;

    cv::OrbFeatureDetector OrbDetector;

    while (running) {
        IplImage *newFrame = cvLoadImage("x1.jpg");
        IplImage *newFrameBW = cvCreateImage(cvGetSize(newFrame), newFrame->depth, 1);
        cvConvertImage(newFrame, newFrameBW);
        vector<KeyPoint> KeyPoints;
    }
}

但是,添加以下行:

OrbDetector.detect(newFrameBW, KeyPoints);

到while循环会导致以下错误:

HEAP[Example 4.exe]: Invalid address specified to RtlFreeHeap( 006B0000, 02474D20 )
Example 4.exe has triggered a breakpoint.

我确信代码没有问题,因为我刚刚看到它在别人的机器上成功运行。是否有任何与代码无关的东西可能导致这种情况?

4

1 回答 1

2

问题是您使用的 OpenCV 版本无法处理 MCVS 2012。这不是代码问题,因为我有一个类似的包含向量但无法正常工作的代码。看看本教程,它将向您展示如何重建 OpenCV 库并且您的代码将运行良好;)这是链接: http ://answers.opencv.org/question/6495/visual-studio-2012-和-rtlfreeheap-错误/

于 2013-02-28T13:02:52.247 回答