1

私の問題は驚くべきことです。これはコードです

 #define NCHANNEL 3
 #define NFRAME 100
 Mat RR = Mat::zeros(NCHANNEL, NFRAME-1, CV_64FC1);

double *p_0 = RR.ptr<double>(0);
double *p_1 = RR.ptr<double>(1);
double *p_2 = RR.ptr<double>(2); 
cout<< p_0[NFRAME-1] << endl << p_1[NFRAME-1] << endl << p_2[NFRAME-1] << endl;

そして、出力は0 0 -6.27744e+066です。
そのひどい数はどこから来たのですか?
ポインタか何かラフなものをメモリに印刷しているようです。
(もちろん、0は他のすべての要素の値です)。

4

1 に答える 1

3

マットの最後の要素の後にアクセスしています。初期化に使用する場合NFRAME-1、最後の要素にはNFRAME-2インデックスがあります。

于 2012-09-30T15:13:55.277 に答える