函数一
#include <opencv2/opencv.hpp>
cv::Mat func(cv::Mat input) {
input.setTo(0);
return input;
}
int main(int argc, char const *argv[]) {
cv::Mat imga = cv::imread("/home/ly/Pictures/11111111.jpg");
cv::Mat imgb = imga;
cv::Mat imgc = imga.clone();
cv::Mat imgd = func(imga);
return 0;
}
- imga 、imgb、imgd共享了矩阵头,当一个改变其他两个都改变。
- imgc深拷贝,完全独立,
函数二
#include <opencv2/opencv.hpp>
cv::Mat func(cv::Mat input) {
input = cv::Mat::ones(4, 4, CV_32F);
return input;
}
int main(int argc, char const *argv[]) {
cv::Mat imga = cv::imread("/home/ly/Pictures/11111111.jpg");
cv::Mat imgb = imga;
cv::Mat imgc = imga.clone();
cv::Mat imgd = func(imga);
return 0;
}
- imga、imgb共享矩阵头,两个相互影响,由于在func中调用了构造函数,所以input会重新内存空间,那么imgd也独立
- imgc深拷贝,完全独立