In C++/opencv, how can I select a subset of a big Mat and copy them to create a new Mat? I know how to use copyto, colrange, rowrange, etc., but don't know to combine them together to develop a decent and efficient code. Thanks!
You can use copyTo() for this purpose:
//copy a sub matrix of X to Y with starting coodinate (startX,startY)
// and dimension (cols,rows)
cv::Mat tmp = X(cv::Rect(startX,startY,cols,rows));
cv::Mat Y;
tmp.copyTo(Y);
or directly:
cv::Mat Y;
X(cv::Rect(startX,startY,cols,rows)).copyTo(Y);