访问Mat时出错结果
简而言之,我想总结一个Mat矩阵中的值。 现在我有一个256乘1 Mat(这实际上是一个向量,但Mat格式稍后会很重要)。 为了看看会发生什么,我试图在循环中打印它
`
calcFractile(Mat* in){
cout << "Input = " << *in << endl;
cout << "?!?! ";
for(int k = 0; k<in->rows; k++){
cout << static_cast<int>(in->at<uint8_t>(0,k)) << ", ";
sum += (int)in->at<uint8_t>(0,k);
}
cout <<endl;
}
`
我完全不明白为什么,但cout <<“输入行生成正确的结果,但访问单个元素的循环未能给出不同的结果。它不仅仅是数值问题,还包括数组中的位置。
我通过的垫子是图像的直方图,直方图是单通道,256个分档。
问题来自于类型转换,或者说缺少它 。 只要我写了
的static_cast(IN-在>(0,k)的
它的工作。 也只是(int)(in>(0,k)似乎也正常工作。
我了解到的教训 - *总是检查类型铸造*不是它是新的东西,但也许有人会受益
链接地址: http://www.djcxy.com/p/67011.html