60

我需要将cv::Mat图像(源)复制到另一个(目标)cv::Mat图像的 ROI。

我找到了这个参考,但它似乎不适用于我的情况。你有什么指示我如何使用 OpenCV C++ 接口来做到这一点?

4

3 回答 3

88

开放CV 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);
于 2012-05-07T12:40:33.703 回答
12

除了或更正上述答案之外,如果您想将较小的 open 区域复制Mat到 another Mat,您应该执行以下操作:

src(Rect(left,top,width, height)).copyTo(dst);
于 2015-07-08T02:11:29.730 回答
9

这样做对我有用:

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

我正在使用基于 Andrey 的回答的 Opencv 2.4.9。

于 2014-10-05T12:07:17.617 回答