gpt4 book ai didi

c++ - Opencv Findcontours 导致堆错误

转载 作者:搜寻专家 更新时间:2023-10-31 00:33:00 26 4
gpt4 key购买 nike

我使用的是 opencv 2.49。

但是我被 find contours 函数困扰了几个小时。

当我在 Debug模式下运行程序并返回错误框时

Debug assertion failed

Program: ... File f:\dd\vctools\crt_bld\self_x86\crt\src\dbgheap.c

Line: 1322

Exception:_ CrtIsValidHeapPoionter(pUserData)

这是我的功能

HRESULT OpenCVHelper::DrawHand(Mat* pImg)        
{
vector<vector<Point> > contours;
vector<Vec4i> hierarchy;
cvtColor(*pImg, *pImg, CV_RGBA2GRAY);
//Canny(*pImg, *pImg, 30,50);
threshold( *pImg, *pImg, 50, 255,THRESH_BINARY);
if(pImg->type() == CV_8UC1)
{
findContours( *pImg, contours, hierarchy, CV_RETR_LIST,CV_CHAIN_APPROX_SIMPLE, Point(0, 0) );
}
for( int i = 0; i< contours.size(); i++ )
{
Scalar color = Scalar( rng.uniform(0, 255), rng.uniform(0,255), rng.uniform(0,255) );
Scalar color( rand()&255, rand()&255, rand()&255 );
drawContours( *pImg, contours, i, color, 2, 8, hierarchy, 0, Point() );
}

//contours.clear();
//hierarchy.clear();
cvtColor(*pImg, *pImg, CV_GRAY2RGBA);
return S_OK;

当我删除 findcontour 函数时没有错误。

当我使用 findcontour 时,它会弹出上面显示的错误框。

当我添加“contours.clear(); hierarchy.clear();”这两行,没有错误信息,但程序仍然崩溃。

有人可以帮忙吗?

编辑 1. 我找到了导致堆损坏的分配器,它是 vector > contours;但我仍然不知道如何修复它。

最佳答案

终于找到问题了...

我的开发环境window10 x64, Intel i5 ( X64 ),MS Visual Studio 2010 SP1

OpenCV 2.4.9(测试 2.4.13 得到同样的错误)

有人解决了这个问题:up to opencv version。 2.4.9.,听到的是我的代码。

Mat Img = imread( src_image );
if (Img.rows == 0 || Img.cols == 0)
return -1;

Mat ImgGray;
cvtColor( Img, ImgGray, CV_BGR2GRAY );
Mat threshold_output;
vector<vector<Point>> contours; // <<
vector<Vec4i> hierarchy;

int blkSize = 5;
int nKernelSz = 3;
double dFactor = 2.0f;

adaptiveThreshold(ImgGray,threshold_output,
100,CV_ADAPTIVE_THRESH_MEAN_C,CV_THRESH_BINARY_INV,blkSize, 5);

findContours(threshold_output, contours, hierarchy, CV_RETR_TREE,
CV_CHAIN_APPROX_SIMPLE, Point(0, 0) );

"vector < vector <点>>" 导致运行时库/MTd 出错 解决:运行时库更改为/MD

这是下面引用的站点。 http://opencv-users.1802565.n2.nabble.com/c-interface-heap-mem-problem-findcontours-td7020857.html

关于c++ - Opencv Findcontours 导致堆错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29931937/

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