根据文档,此函数应返回一个Mat,并将所有元素都作为元素。

Mat m = Mat::ones(2, 2, CV_8UC3);

我期望得到[1,1,1]的2x2矩阵。相反,我得到了这个:
[1, 0, 0] [1, 0, 0]
[1, 0, 0] [1, 0, 0]

这是预期的行为吗?

最佳答案

看来Mat::ones()仅可用于单 channel 数组。对于具有多个 channel 的矩阵,ones()仅将第一个 channel 设置为1,而将其余 channel 设置为零。

请使用以下构造函数:

Mat m = Mat(2, 2, CV_8UC3, Scalar(1,1,1));
std::cout << m;

编辑。呼唤
Mat m = Mat::ones(2, 2, CV_8UC3);

和打电话一样
Mat m = Mat(2, 2, CV_8UC3, 1); // OpenCV replaces `1` with `Scalar(1,0,0)`

关于c++ - OpenCV Mat::ones函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18469734/

10-11 22:38
查看更多