訪問多通道矩陣的第n行通道的語法是什麼?我可以接入信道(I,J);元:: n,而是什麼是使用功能,如行,rowRange,語法.....訪問OpenCV Mat中的多個通道
示例代碼:
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
訪問多通道矩陣的第n行通道的語法是什麼?我可以接入信道(I,J);元:: n,而是什麼是使用功能,如行,rowRange,語法.....訪問OpenCV Mat中的多個通道
示例代碼:
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;
約這樣做什麼:
cout << M.row(0).col(1) << endl;
的Mat::row
函數返回一個Mat
,這樣你就可以再次調用要麼row
或col
的結果,讓你從它需要的行或列。
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];
注意,mat.col(0)做了一個深層複製,所以'helpimg .col(0).begin()[0] [0] = 4.5;'不會改變helpimg的內容! (是的,它是行()和col()之間的區別!) – berak 2013-02-19 17:05:58