gpt4 book ai didi

c++ - HoughLinesP 和 opencv 内存管理

转载 作者:行者123 更新时间:2023-11-28 03:21:35 24 4
gpt4 key购买 nike

我目前正在研究计算机视觉并尝试使用 Hough-Transform 来寻找一些线条。它自身的操作正在运行,但即使是最小的示例代码也会产生释放错误。

#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;
}

请注意,如果我将行转换为 * 行,在堆上创建 vector 并且不删除它,一切正常。我看不出代码有任何问题,它直接取自 OpenCV 示例。

异常发生在

msvcr110d.dll!_CrtIsValidHeapPointer(const void * pUserData) Line 2036  C++

我是从 VS 2012 64 位版本编译运行的,可执行文件也是 64 位的。操作系统是 Windows 7,64 位

最佳答案

这个问题可以通过这两个选项之一解决:

  • 将您的应用程序链接到与您的 OpenCV 库相同的 CRT版本确实如此,

  • 重新编译 OpenCV 并禁用静态 CRT 链接。

这是因为 HoughLinesP 在通过引用传递的“线”对象内分配内存,但在调用 HoughLinesP 的函数结束时,您的应用程序将取消分配内存。因此,对于不同的 CRT,这会产生问题。

关于c++ - HoughLinesP 和 opencv 内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15283551/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com