2013-07-17 5 views
2

En C++/opencv, comment puis-je sélectionner un sous-ensemble d'un gros Mat et les copier pour créer un nouveau Mat? Je sais comment utiliser copyto, colrange, rowrange, etc., mais je ne sais pas les combiner pour développer un code décent et efficace. Merci!Sélectionnez un sous-ensemble d'un Mat et copiez-les pour créer un nouveau mat dans C++/Opencv

+1

Jetez un oeil à (http://docs.opencv.org [Mat :: clone()] /modules/core/doc/basic_structures.html#mat-clone) – user2510575

Répondre

5

Vous pouvez utiliser copyTo() à cet effet:

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

ou directement:

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

Devrait être 'tmp' au lieu de' temp'. –