Copier une région d’une image dans une autre région d’une autre image

J’aimerais faire une chose très simple: copier une zone à l’intérieur d’une image dans une nouvelle zone d’une nouvelle image. Dans la feuille de sortingche OpenCV 2.3, ils suggèrent la solution suivante:

“Exemple 3. Copier le ROI d’une image sur une autre image avec conversion”

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

Mon code est le suivant:

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

Je veux juste copier l’image frameO en sortie à l’emplacement Rect(20,20, frameO.cols, frameO.rows) .
Tout le monde peut me dire pourquoi cela ne fonctionne pas?

En réalité, ces commandes ne fonctionnaient pas dans OpenCV 2.3, mais la version suivante fonctionne bien avec la version 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))); 

Cela copiera frame1 dans la sortie tant que le type est conforme, soyez donc prudent lorsque vous créez une sortie. frame1 sera copié dans une ROI en sortie définie par Rect(0, 0, frame1.cols, frame1.rows) .