ビデオフレームをグレースケールに変換することで得られるopenCVマトリックス要素にアクセスしようとしています。私のコードは次のようなものです:
int C = 3;
cv::Mat grayPrevious;
cv::cvtColor ( previousFrame, grayPrevious, CV_RGB2GRAY );
double* grayPtr = grayPrevious.ptr <double> ();
double mean [600][800][3];
///... // set some values to mean here
for ( int i = 0; i < 600; i ++ )
{
for ( int j = 0; j < 800; j ++ )
{
for ( int m = 0; m < C; m ++ )
{
diff [i][j][m]= abs(grayPtr[ 800* (i-1)+j] - mean[i][j][m]);
}
}
}
しかし、for ループでクラッシュします。これはデータ型に関連するものですか?どうすれば変更できますか?
また、2 つ目の質問は、「grayPrevious.at」を使用して、grayPrevious マトリックスの要素を画面に表示しようとしたのですが、「double」の場合は「-5.235125e+30」、「double」の場合は「-11242433」のような値が表示されます。イント」。これも私を混乱させます。0 から 255 の間の値が表示されることを期待していました。