OpenCV Mat :: ones函数

时间:2013-08-27 15:29:08

标签: c++ opencv

根据文档,此函数应返回Mat,其中所有元素都为1。

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

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

[1, 0, 0] [1, 0, 0]
[1, 0, 0] [1, 0, 0]

这是预期的行为吗?

1 个答案:

答案 0 :(得分:13)

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

请改用以下构造函数:

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)`