将cv :: Mat复制到另一个的ROI中

the*_*sem 52 c++ opencv copy roi

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

我找到了这个参考,但似乎它对我的情况不起作用.你有什么指针我怎么能用OpenCV C++接口做到这一点?

And*_*aev 78

OpenCV 2.4:

src.copyTo(dst(Rect(left, top, src.cols, src.rows)));
Run Code Online (Sandbox Code Playgroud)

OpenCV 2.x:

Mat dst_roi = dst(Rect(left, top, src.cols, src.rows));
src.copyTo(dst_roi);
Run Code Online (Sandbox Code Playgroud)

  • 以前版本的opencv有什么区别?为什么代码不同? (5认同)
  • 产生`没有匹配函数调用'cv::Mat::copyTo(cv::Mat)' viewtest2.cpp:172:61:注意:候选是:/usr/include/opencv2/core/core.hpp:1651 :10: 注意:OpenCV 2.4.6 中的 void cv::Mat::copyTo(cv::OutputArray) const`。然而,第二种解决方案确实有效,但它会生成一个只有 src 的图像。 (2认同)

Mic*_*ich 9

除了或更正上述答案之外,如果您想将较小的开放区域复制Mat到另一个区域Mat,您应该:

src(Rect(left,top,width, height)).copyTo(dst);
Run Code Online (Sandbox Code Playgroud)


Ren*_*loi 7

以这种方式为我工作:

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();
Run Code Online (Sandbox Code Playgroud)

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