opencv Mat理解

函数一

#include 

cv::Mat func(cv::Mat input) {
    input.setTo(0);
    //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、imgd共享了矩阵头,当一个改变其他两个都改变。
  • imgc深拷贝,完全独立,

函数二

#include 

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深拷贝,完全独立

你可能感兴趣的:(java,java,后端)