【发布时间】:2022-08-18 18:18:37
【问题描述】:
由于意外的结果,我使用 OpenCV Mat 很痛苦。
有一个示例代码:
cv::Mat local_mat = cv::Mat::eye(cv::Size(1000, 1000), CV_8UC1);
qDebug() << \"1. local_mat.data: \" << local_mat.data;
cv::Mat sobel_img_ = cv::Mat::eye(cv::Size(1000, 1000), CV_8UC1);
qDebug() << \"2. sobel_img_.data: \" << sobel_img_.data;
sobel_img_ = local_mat; // copy address but no clone()
qDebug() << \"3. sobel_img_.data: \" << sobel_img_.data;
sobel_img_ = cv::Mat::eye(cv::Size(1000, 1000), CV_8UC1); // renew
qDebug() << \"4. sobel_img_.data: \" << sobel_img_.data;
- local_mat.data: 0x55aa19a53e40
- sobel_img_.data: 0x55aa19b480c0
- sobel_img_.data: 0x55aa19a53e40
- sobel_img_.data: 0x55aa19a53e40
1 和 2 应该不同,因为我创建了 new Mat(),所以没关系。
但是,即使我在将 local_mat 复制到 sobel_mat 后创建了 new Mat(),3 和 4 也是相同的。
当我使用 OpenCV Mat 时,我遇到了很多这样的问题。
你能解释一下为什么会发生这种情况,我该如何解决?
标签: c++ opencv memory-management heap-memory