Что такое синтаксис для доступа к i-й строке channel :: n многоканальной матрицы. Я могу получить доступ (i, j) к элементу channel :: n, но каков синтаксис для использования таких функций, как 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
Я думаю, что вы ищете следующее:
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;
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];
Как насчет этого:
cout << M.row(0).col(1) << endl;
Mat::row
функция возвращает Mat
, так что вы можете позвонить либо row
или же col
снова на результат, чтобы получить нужную вам строку или столбец.