我的问题真是令人惊讶。这是代码

 #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是所有其他元素的值)。

最佳答案

您要在Mat的最后一个元素之后访问。如果使用NFRAME-1进行初始化,则最后一个元素具有NFRAME-2索引。

关于opencv - cv::Mat::zeros初始化问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12660390/

10-12 14:55
查看更多