1

次のコードがあります。

cv::Mat data ( HEIGHT,WIDTH, CV_32SC1 );
cv::Mat means = cv::Mat::zeros (HEIGHT, WIDTH, CV_64FC1 );
int *dPtr = new int [HEIGHT*WIDTH];
dPtr =  data.ptr<int>();
double *mPtr = new double [HEIGHT*WIDTH];
mPtr =  means.ptr < double>();

for ( int i = 0; i < N; i ++)
{
    for ( int j = 0; j < M; j ++ ) 
    {
         mPtr[ WIDTH * (i-1) + j ] += dPtr[ WIDTH * (i-1) + j ];
    }
}

しかし、プログラムは for ループ内でクラッシュし、何らかの形で行列のサイズを超えているとは思えません。しかし、私はそれを理解することはできません。誰かが私を助けることができますか?前もって感謝します。

4

1 に答える 1

4

インデックスi、jは0で始まるため、配列式(i-1)では-1を省略してください。

于 2012-10-04T11:22:35.303 に答える