C++ opencv:rect中的Mat构造函数

C++ opencv:rect中的Mat构造函数,c++,opencv,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_

我试图从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);
要实际复制数据,请使用

cv::Mat submat = original_image(sub_image).clone();
这将将原始图像的数据深度复制到一个新的(可能是连续的)矩阵中

你可以使用
original_image(sub_image).copyTo(submat)
以达到相同的效果,但通常.clone()会导致代码更短