2012-04-13 87 views
7

我想做一件非常簡單的事情:將圖像內的區域複製到新圖像中的新區域。在OpenCV的2.3的cheatsheet,他們建議如下解決方案:將圖像的區域複製到另一個圖像中的另一個區域

「實施例3.複製圖像ROI與轉換的另一圖象」

Rect r(1, 1, 10, 20); 
Mat dstroi = dst(Rect(0,10,r.width,r.height)); 
src(r).convertTo(dstroi, dstroi.type(), 1, 0); 

我的代碼如下:

Mat frameO, frameS; 

original >> frameO; 
stabilized >> frameS; 

Mat output(frameO.rows+40, frameO.cols*2+60, CV_32FC3); 
output.setTo(0);    
Rect r(0,0, frameO.cols, frameO.rows); 
Mat destROI = output(Rect(20,20, frameO.cols, frameO.rows)); 
frameO(r).copyTo(destROI); 

我只是想複製圖像frameO輸出的位置Rect(20,20, frameO.cols, frameO.rows)
任何人都可以告訴我爲什麼這不起作用?

+0

您提供的代碼片段不完整。您能否發佈整個代碼,包括您實際執行副本的操作。 – ypnos 2012-04-13 09:03:13

+0

[如何在OpenCV中設置ROI?](http://stackoverflow.com/questions/8206466/how-to-set-roi-in-opencv) – karlphillip 2012-04-13 13:00:42

+0

以及http:// stackoverflow的可能重複.com/questions/6566295/opencv -c-getting-region-of-interest-roi-using-cvmat – karlphillip 2012-04-13 13:00:58

回答

13

其實這些命令的OpenCV 2.3沒有工作,但現在下正常工作與2.4版本:

Mat frame1 = imread(nameReading1); 

Mat output(frame1.rows*2, frame1.cols*2, frame1.type()); 
output.setTo(0); 

frame1.copyTo(output(Rect(0, 0, frame1.cols, frame1.rows))); 

這將在輸出複製frame1只要類型一致,當你創建的輸出,所以要小心。 frame1將被複制到由Rect(0, 0, frame1.cols, frame1.rows)定義的輸出中的ROI中。

相關問題