9
根据文档,该函数应返回一个Mat
,其中所有元素均为1。OpenCV Mat :: ones函数
Mat m = Mat::ones(2, 2, CV_8UC3);
我期待得到一个2×2矩阵[1,1,1]
。相反,我得到这个:
[1, 0, 0] [1, 0, 0]
[1, 0, 0] [1, 0, 0]
这是预期的行为?
根据文档,该函数应返回一个Mat
,其中所有元素均为1。OpenCV Mat :: ones函数
Mat m = Mat::ones(2, 2, CV_8UC3);
我期待得到一个2×2矩阵[1,1,1]
。相反,我得到这个:
[1, 0, 0] [1, 0, 0]
[1, 0, 0] [1, 0, 0]
这是预期的行为?
它看起来像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)`
这是伟大的,谢谢。在我的情况下,我不得不使用标量(255,255,255)(对于CV_8UC4类型) –