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類型) –