选择Mat的子集并复制它们以在C ++ / Opencv中创建新的mat

时间:2013-07-17 04:22:26

标签: c++ opencv matrix mat

在C ++ / opencv中,如何选择大型Mat的子集并复制它们以创建新的Mat?我知道如何使用copyto,colrange,rowrange等,但不知道将它们组合在一起以开发一个体面和高效的代码。谢谢!

1 个答案:

答案 0 :(得分:9)

您可以将copyTo()用于此目的:

//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);

或直接:

cv::Mat Y;
X(cv::Rect(startX,startY,cols,rows)).copyTo(Y);