OpenCv C ++访问冲突读取位置

时间:2013-09-12 00:51:15

标签: c++ opencv image-processing video-processing access-violation

我的程序在早期循环中运行完美。但经过几次循环后,程序停止,因为访问冲突读取位置为0x01534000。每次运行它都会有不同的地址。

错误位于此处:

for( k = 0; k < neighbors; k++ )
        {        
                MhP[i].x += E[k] * (pt[k].x - pt[i].x);
                MhP[i].y += E[k] * (pt[k].y - pt[i].y);
                WP[i] += (float) E[k];
        }

我的第一个建议是内存过载。所以我检查我的代码的底部,我释放MhP,WP和E.但不是pt(我需要在此函数之外)。 这是他们的分配:

E = (float *) cvAlloc( neighbors * sizeof( float ));
MhP = (CvPoint *) cvAlloc( neighbors * sizeof ( CvPoint ));
WP = (float *) cvAlloc( neighbors * sizeof ( float ));

并初始化。

for( k = 0; k < neighbors; k++ )
        {
            E[k] = _alpha * Econt[k] + _beta * Ecurv[k] + _gamma * Eimg[k];

        }
        MhP[i].x = 0;
        MhP[i].y = 0;
        WP[i] = 0;

我修改了蛇的活动轮廓代码。但即使我不修改它(原始cvSnake)它也有同样的问题。我使用代码进行对象跟踪。所以算法运行了很多次。就像我之前说过的那样,几次(可能是30帧)后访问违规读取位置的错误。 抱歉我的英文不好:(。请帮助我..

0 个答案:

没有答案