web-dev-qa-db-fra.com

Copier un cv :: Mat dans un ROI d'un autre

J'ai besoin de copier un cv::Mat image (source) vers une ROI d’une autre (destination) cv::Mat image.

J'ai trouvé cette référence , mais il semble que cela ne fonctionne pas pour mon cas. Avez-vous des indications sur comment faire cela en utilisant l'interface OpenCV C++?

50
theosem

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);
75
Andrey Kamaev

En plus de la correction apportée aux réponses ci-dessus, si vous souhaitez copier une plus petite région d’ouverture Mat dans un autre Mat, vous devez procéder comme suit:

src(Rect(left,top,width, height)).copyTo(dst);
8
Mich

Cela a-t-il fonctionné pour moi

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

J'utilise Opencv 2.4.9 Basé sur la réponse d'Andrey.

7
Renato Aloi