9
ドキュメントによれば、この関数はすべての要素を1として、Mat
を返さなければなりません。OpenCV Mat :: ones関数
Mat m = Mat::ones(2, 2, CV_8UC3);
私はの2x2行列を得ることを期待していました。代わりに、私はこれを持っています:
[1, 0, 0] [1, 0, 0]
[1, 0, 0] [1, 0, 0]
これは期待された動作ですか?
ドキュメントによれば、この関数はすべての要素を1として、Mat
を返さなければなりません。OpenCV Mat :: ones関数
Mat m = Mat::ones(2, 2, CV_8UC3);
私はの2x2行列を得ることを期待していました。代わりに、私はこれを持っています:
[1, 0, 0] [1, 0, 0]
[1, 0, 0] [1, 0, 0]
これは期待された動作ですか?
Mat::ones()
のように見えるのは、シングルチャンネルアレイの場合だけです。複数チャネルの行列の場合ones()
は、最初のチャネルのみを1に設定し、残りのチャネルは0に設定します。
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)`
、感謝を呼び出すのと同じです。私の場合は、代わりにScalar(255,255,255)を実行する必要がありました(CV_8UC4タイプの場合) –