访问多通道矩阵的第i行channel :: n的语法是什么。我可以访问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
答案 0 :(得分: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];
答案 1 :(得分: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;
答案 2 :(得分:1)
这样做:
cout << M.row(0).col(1) << endl;
Mat::row
函数返回Mat
,因此您可以再次对结果调用row
或col
以获取所需的行或列。< / p>