2012-05-07 226 views

回答

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

的感謝!我這樣做,並且工作得很好:bboxImage.copyTo(destImage.colRange(startCol,startCol + bboxImage.cols).rowRange(startRow,startRow + bboxImage.rows)); – theosem

+1

產生'沒有匹配函數調用'cv :: Mat :: copyTo(cv :: Mat)' viewtest2.cpp:172:61:備註:候選者是: /usr/include/opencv2/core/core。 hpp:1651:10:注意:OpenCV 2.4.6中的void cv :: Mat :: copyTo(cv :: OutputArray)const。然而,第二種解決方案可以工作,但是隻有src纔會生成圖像。 – pbond

+5

以前版本的opencv有什麼區別?爲什麼代碼不同? (Rect(left,top,src.cols,src.rows));' – nkint

6

爲我做的工作是這樣的:基於

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

我使用opencv 2.4.9 安德烈的回答。

5

除了或更正上面的回答,如果你想開Mat一個較小的區域複製到另一個Mat,你應該做的:

src(Rect(left,top,width, height)).copyTo(dst); 
相關問題