根据文档,这个函数应该返回一个 Mat
所有元素都作为一个。
Mat m = Mat::ones(2, 2, CV_8UC3);
我期待得到一个2x2矩阵 [1,1,1]
。相反,我得到了这个:
[1, 0, 0] [1, 0, 0]
[1, 0, 0] [1, 0, 0]
这是预期的行为吗?
根据文档,这个函数应该返回一个 Mat
所有元素都作为一个。
Mat m = Mat::ones(2, 2, CV_8UC3);
我期待得到一个2x2矩阵 [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)`
看起来像 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)`