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- and-rtlfreeheap-error/

于 2013-02-28T13:02:52.247 に答える