我有以下代码,可以正常运行:
#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.
我确定代码没有错,因为我刚刚看到它可以在其他人的机器上成功运行。是否有任何非代码相关的原因可能导致这种情况?
最佳答案
问题是您使用的OpenCV版本在MCVS 2012中无法正常运行。这不是代码问题,因为我有一个类似的包含 vector 的代码,但无法正常工作。
看一下本教程,它将向您展示如何重建OpenCV库,并且您的代码可以很好地工作;)
链接在这里:
http://answers.opencv.org/question/6495/visual-studio-2012-and-rtlfreeheap-error/
关于opencv - OpenCV代码错误-为RtlFreeHeap指定的地址无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15107008/