ここに同様の質問を投稿しました:
しかし、今回も配列に関する別の問題に遭遇しました。私のコードは次のようなものです:
double diff[600][800][3];
cv::Mat value ( height, width, CV_8UC3 );
double mean[600][800][3];
....
for ( int i =0; i < 5; ++ i )
{
for ( int j = 0; j < 3; ++j )
{
for ( int m = 0; m < 2; ++m )
{
mean[i][j][m] = 10/m;
diff[i][j][m] = abs ( value.data[value.cols*i+j]-mean[i][j][m]);
}
}
}
次の行でクラッシュしました。
diff[i][j][m] = abs ( value.data[value.cols*i+j]-mean[i][j][m]);
私はその行を省略して、次のように書きました。
double test = abs ( value.data[value.cols*i+j]-mean[i][j][m]);
コンパイルしてから追加しました
std::cout << test << std::endl;
再びクラッシュし、次の行もクラッシュしました。
diff[i][j][m] = test;
私はそれを次のように変更しました:
double test = static_cast<double>(abs(value.data[value.cols*i+j]-mean[i][j][m]));
diff[i][j][m] = test;
再び、墜落した。次のように書くと:
diff[i][j][m] = 10;
コンパイルします。私は本当に問題を理解できません。これは、スタック オーバーフローやデータ型とは関係がないようです。前の質問に対する Aki Suihkonen の回答も試してみましたが、役に立ちませんでした。誰かがここで問題を見つけるのを手伝ってくれませんか??