如何制作cv :: Mat的矩形区域的深层副本?

2 c++ opencv

使用opencv 2.3.我有一个由一个矩形限定的区域,我想要提取并制作一个深层副本,这样当图像被破坏时,这个矩形区域可以继续存在.我正在使用它作为视频序列匹配的模板.你怎么能这样做?

mor*_*icz 11

引用OpenCV 2.3在线文档使用此构造函数创建cv :: Mat的矩形感兴趣区域:

// select a ROI
Mat roi(img, Rect(10,10,100,100));
Run Code Online (Sandbox Code Playgroud)

然后做一个深拷贝做:

Mat deepRoiExplorer=roi.clone();
Run Code Online (Sandbox Code Playgroud)


Mic*_*man 5

您可以使用Mat::clone()将 ROI 复制到新图像,或者您可以自己创建目标图像并使用Mat::copyTo()

Mat source...;        // your source image
Rect sourceRect(...); // your ROI

// using clone
Mat target = source(sourceRect).clone();

// using copyTo
Mat target(sourceRect.size(), source.type());
source(sourceRect).copyTo(target);
Run Code Online (Sandbox Code Playgroud)