-3

私は現在 C++ を使用しており、OpenCV に依存するプログラムを作成しています。ネストされた 2 つの for ループに問題があります。

float invalue = 0;
float columnvalue = 0;
CvScalar rscal;


printf("%i\n", height);
printf("%i\n", width);

for(int i=0; i < height; i++)
{
 columnvalue = 0;
 printf("%i\n", i);

 for(int j=0; j < width; j++)
  {
    rscal = cvGet2D(matrix,i,j);            
    columnvalue += rscal.val[0];        
   }

 printf("%f\n", columnvalue);
 holder[i] = columnvalue;       
 }

私が抱えている問題は、2 を超えてインクリメントしていないように見えることです。このコードの出力は次のとおりです。

480
640
0
100
1
113
2
200

そして、コードの実行が停止します。私が間違っていることの手がかりはありますか?

4

2 に答える 2

1

あなたが何を意図したのかよくわからないので、間違っているかもしれませんが、そうあるべきだと思いますfloat holder[] = new float[width];height現在、単に存在しない配列の要素にアクセスしようとしていて、またはの値を変更していると思いますi

于 2013-06-10T23:17:48.620 に答える
0

プログラムが未割り当てのメモリ ロケーション holder[i] にアクセスしようとして終了したと思います。行をコメントアウトすることでこれを確認できます

holder[i] = columnvalue; 
于 2013-06-11T04:46:25.093 に答える