opencv:来自rect的mat构造函数

时间:2015-05-15 13:42:24

标签: c++ opencv

我试图从openCV矩阵数据结构生成子图像,如下所示:

cv::Rect sub_image = cv::rect(10, 10, 200, 200);
cv::Mat submat = original_image(sub_image);

我的问题是,如果我有一些低级memcpy操作,并且我使用submat.data作为源,它是否指向正确的子图像?我想不是因为文档似乎暗示它都指向同一个数据集。

如果是,我该如何使用构造

cv::Mat submat = original_image(sub_image);

还要实际复制数据吗?

1 个答案:

答案 0 :(得分:2)

使用

cv::Mat submat = original_image(sub_image).clone();

这将将original_image的数据深度复制到新的(可能是连续的)矩阵。

您可以使用original_image(sub_image).copyTo(submat);达到相同的目标,但.clone()通常会缩短代码。