我目前正在查看计算机视觉并尝试使用Hough变换来查找某些行。它自己的操作正在工作,但即使最小的示例代码也会产生释放错误。HoughLinesP和opencv内存管理
#include <iostream>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace std;
using namespace cv;
int main(int argc, char* argv[])
{
int size[] = {100, 100};
Mat img(1, size, CV_8U);
img = cv::Scalar(255);
vector<Vec4i> lines;
HoughLinesP(img, lines, 1, CV_PI/180, 100, 30, 5);
cout << lines.size() << endl;
}
请注意,如果我将行转换为*行,在堆上创建矢量并且不删除它,一切工作正常。我看不出有关代码的任何问题,它直接来自OpenCV示例。在
msvcr110d.dll!_CrtIsValidHeapPointer(const void * pUserData) Line 2036 C++
我编译和VS 2012 64-版本上运行这一点,可执行也出现64位
的异常。操作系统是Windows 7,64位
完全相同的问题。我已经在OpenCV代码库中找到了一个回归单元测试,它给HoughLinesP一个cv :: Mat,而不是一个向量为int的向量。也许这是一个线索? http://code.opencv.org/projects/opencv/repository/revisions/9908ff33dec00402a3793b87ce4c4087080141b6/entry/modules/imgproc/test/test_houghLines.cpp我现在正在自己的代码中探索。任何帮助赞赏。 – Doodloo 2014-01-14 17:45:15
我到目前为止还没有进一步调查过它,只是住在一起。但是,它似乎与32位的2.4.8一起工作。我没有为我目前的项目建立一个64位的环境,但是在我的日程安排中,一旦有“应该拥有”的空间,我可以提议。我会让你知道发生了什么。 – Mene 2014-01-16 22:15:56