2012-05-07 14 views

cevap

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

teşekkür! Bunu böyle yaptım ve harika çalışıyor: bboxImage.copyTo (destImage.colRange (startCol, startCol + bboxImage.cols) .rowRange (startRow, startRow + bboxImage.rows)); – theosem

+1

Verimler, 'cv :: Mat :: copyTo (cv :: Mat)' viewtest2.cpp: 172: 61: not: adaylar: /usr/include/opencv2/core/core. hpp: 1651: 10: not: void cv :: Mat :: copyTo (cv :: OutputArray) const' içinde OpenCV 2.4.6. Ancak ikinci çözüm işe yarıyor, ancak sadece src ile bir görüntüye dönüşüyor. – pbond

+5

opencv'in önceki sürümü arasındaki fark nedir? Kod neden farklı? – nkint

6

benim için iş bu şekilde istediniz:

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

Ben OpenCV 2.4.9 kullanıyorum dayanarak Andrey'nin cevabı. Başka Mat açık Mat daha küçük bir bölgeyi kopyalamak istiyorsanız yukarıdaki cevaplara ekleme ya da düzeltme olarak

5

, yapmanız gereken:

src(Rect(left,top,width, height)).copyTo(dst); 
İlgili konular