【发布时间】:2015-07-25 07:10:10
【问题描述】:
我有这个代码:
Mat Marker = Mat::zeros(MarkerSize, MarkerSize, CV_8UC1);
cout << "Marker:" << endl;
for (int row=0; row<MarkerSize; row++)
{
for (int col=0; col<MarkerSize; col++)
cout << Marker.at<int>(row, col)<<", ";
cout << endl;
}
其中MarkerSize=6 和CV_8UC1 最好是不可更改的(用于解决方案)。
但是我得到了这个输出:
Marker:
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 65536, -1664876544,
0, 0, 0, 1, 1141152964, 289879,
0, 65536, -1664876544, 1817658372, 1531445252, 2147447774,
这是怎么回事,我该如何解决?
【问题讨论】:
-
Marker.at<int>(row, col)// -
换句话说,您的 Mat 初始化一切正常,您只是在检查结果时访问错误。 (顺便说一句,尽量避免编写每像素循环,而是使用
cout << Marker << endl;) -
Marker.at<int>(row, col)不起作用,输出为Marker: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,。这虽然cout << Marker << endl;有效并且输出是一个零矩阵。现在的问题是Marker.at<???>(row, col)的类型是什么? -
再一次,opencv 的人在这里已经有了一个解决方案,那就是:一次打印出整个 Mat。 (cout
-
再次,使用 opencv,-如果您尝试编写自己的每个像素的东西,-很有可能,您错过了一些高阶函数,没有错误和更快。
标签: c++ opencv unsigned-integer opencv-mat