OpenCV addweighted函数在第4次循环后给出一个未处理的异常

时间:2013-01-02 05:32:04

标签: c++ image-processing opencv

我正在尝试将小图像混合到较大图像的多个区域中。 这是我的代码:

for(int i=0;i<m_numKeypoints;i++)
{
    Keypoint kp = m_keyPoints[i];
    kp.scale;
    //cvLine(img, cvPoint(kp.xi, kp.yi), cvPoint(kp.xi, kp.yi), CV_RGB(255,255,255), 3);
    //cvLine(img, cvPoint(kp.xi, kp.yi), cvPoint(kp.xi+10*cos(kp.orien[0]), kp.yi+10*sin((double)kp.orien[0])), CV_RGB(255,255,255), 1);
    // find the points where X and Y is the centre of the rectangle ROI
    ROIa=calculateFirstPoint(kp.xi,kp.yi,rectX,rectY); 
    ROIb=calculateSecondPoint(kp.xi,kp.yi,rectX,rectY);
    if (kp.scale>2 && kp.scale<10)
    {
        ROI=yuv_channels[0](Rect(ROIa,ROIb));
        addWeighted(ROI,0.5,watermark,0.5,0.0,ROI);

    }
    else if (i==m_numKeypoints-1)
    {
        merge(yuv_channels,3,resImg);
        imshow("Result",resImg);
    }
} 

然而,当它进入IF条件时,它在MySIFT.exe中给出了“0x5b78ad7a(msvcp100d.dll)的未处理异常:0xC0000005:访问冲突读取位置0xccccccd0。”在i = 3之后。 我不知道出了什么问题,如果有人能够解决这个问题,我将不胜感激。 谢谢 。

1 个答案:

答案 0 :(得分:0)

我会打印ROIaROIb的值,最有可能是第四个特征,其中一个点在yuv_channels[0]之外。