简单地说,我想在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&lt;&lt; “输入[...]行产生正确的结果,但访问单个元素的循环无法给出不同的结果 这不仅仅是价值问题,也是数组中的位置。
我传递的Mat是图像的直方图,直方图是单通道,256个bin。
答案 0 :(得分:0)
问题来自于类型转换,或者说缺少。 我一写了
的static_cast(IN-&GT;(0,k)的
它有效。 也是 (int)(in-&gt; at(0,k)似乎也能正常工作。
我学到的课程 - * 总是检查类型转换* 而不是它是新的东西,但也许有人会受益