【发布时间】:2016-02-13 12:05:08
【问题描述】:
我想裁剪cv::Mat - 也就是说,不仅仅是让它指向内存中更广泛矩阵的投资回报率,而是真正摆脱所有原始数据,但投资回报率中的数据。此外,我需要我的界面与不返回垫子的 opencv 传统保持一致;基本上我想要这个:
void crop(cv::Mat& source, cv::Rect roi, cv::Mat& destination);
(但因为在我的情况下 source===destination)它可能只是这样:
void crop(cv::Mat& mat, cv::Rect roi);
目前我正在这样做:
void crop(cv::Mat& original, cv::Rect roi) {
cv::Mat roi_in_original {original(roi)};
cv::Mat new_mat;
roi_in_original.copyTo(new_mat);
original = new_mat;
}
这不仅冗长而且可能不是最佳的。 S 将 ROI 直接复制到原始垫子是否合理:
void crop(cv::Mat& original, cv::Rect roi) {
cv::Mat roi_in_original {original(roi)};
roi_in_original.copyTo(original);
}
这样可以吗?
【问题讨论】:
-
“dst = src(roi).clone();”怎么样还是“mat = mat(roi).clone();”?
-
mat = mat(roi).clone()看起来优雅而诱人.. 会尝试一下谢谢