我试图从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);
还要实际复制数据吗?
答案 0 :(得分:2)
使用
cv::Mat submat = original_image(sub_image).clone();
这将将original_image的数据深度复制到新的(可能是连续的)矩阵。
您可以使用original_image(sub_image).copyTo(submat);
达到相同的目标,但.clone()通常会缩短代码。