1

マルチチャネル行列の channel::n の i 番目の行にアクセスするための構文は何ですか。channel::n の (i,j) 要素にアクセスできますが、row、rowRange、..... などの関数を使用する構文は何ですか?

サンプルコード:

Mat M(10, 3, CV_32SC3);
cout << M.at<Vec3d>(0,0)[1] << endl;  // This works
cout << M.row(0)[1] << endl;    // Syntax of this
4

3 に答える 3

4
Mat.row(0) returns a Mat, so it's the same game as before:

// if it's really INT 3channels(like your ex. above), you have to use m.at<Vec3i> !!
Mat M(10, 3, CV_32SC3);   

// 3rd row
Mat r = m.row(3);         

// r has only 1 row (3 elems), last pixel there
cout<< r.at<Vec3i>(0,2)[0];  
于 2013-02-19T10:33:18.617 に答える
2

以下を検索していると思います。

 cv::Mat M(10, 3, CV_32SC3);
 cv::Mat_<cv::Vec3d> helpimg = M;
 helpimg .row(0).begin()[0][0] = 2.5;

コンパイルはできますが、テストはしていません。それが機能するかどうかを教えてください。cols 値を取得するためにも使用できます。

 helpimg .col(0).begin()[0][0] = 4.5;
于 2013-02-19T14:20:18.140 に答える
1

これを行うのはどうですか:

 cout << M.row(0).col(1) << endl;  

このMat::row関数は を返すため、結果に対してまたはをもう一度Mat呼び出して、必要な行または列を取得できます。rowcol

于 2013-02-19T09:45:48.000 に答える