2012-05-07 18 views

Respuesta

64

OpenCV 2.4:

src.copyTo(dst(Rect(left, top, src.cols, src.rows))); 

OpenCV 2.x:

Mat dst_roi = dst(Rect(left, top, src.cols, src.rows)); 
src.copyTo(dst_roi); 
+0

gracias! Lo hice así y funciona muy bien: bboxImage.copyTo (destImage.colRange (startCol, startCol + bboxImage.cols) .rowRange (startRow, startRow + bboxImage.rows)); – theosem

+1

Rendimientos 'no función de emparejamiento para llamada a 'cv :: Mat :: copyTo (cv :: Mat)' viewtest2.cpp: 172: 61: nota: los candidatos son: /usr/include/opencv2/core/núcleo. hpp: 1651: 10: nota: void cv :: Mat :: copyTo (cv :: OutputArray) const' en OpenCV 2.4.6. La segunda solución funciona, sin embargo, pero da como resultado una imagen con solo src. – pbond

+5

¿cuál es la diferencia entre la versión anterior de opencv? ¿Por qué el código es diferente? – nkint

6

funcionó para mí de esta manera:

Mat imgPanel(100, 250, CV_8UC1, Scalar(0)); 
Mat imgPanelRoi(imgPanel, Rect(0, 0, imgSrc.cols, imgSrc.rows)); 
imgSrc.copyTo(imgPanelRoi); 

imshow("imgPanel", imgPanel); 
waitKey(); 

estoy usando OpenCV 2.4.9 Basado en La respuesta de Andrey.

5

En adición o corrección de las respuestas anteriores, si desea copiar una región más pequeña de Mat abierta a otro Mat, que debe hacer:

src(Rect(left,top,width, height)).copyTo(dst); 
Cuestiones relacionadas