0

小さな画像を大きな画像の複数の領域にブレンドしようとしています。これが私のコードです:

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 の後。何が悪いのかわからないので、誰かがこの問題に光を当てることができれば大歓迎です。ありがとうございました 。

4

1 に答える 1

0

ROIaとの値を出力しますROIb。最も可能性が高いのは、4 番目の機能の場合、これらの点の 1 つが外側yuv_channels[0]です。

于 2013-01-02T12:22:59.330 に答える