Add the contents of 2 Mats to another Mat opencv c++

前端 未结 2 643
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-12-31 23:13

I just want to add the contents of 2 different Mats to 1 other Mat. I tried:

Mat1.copyTo(newMat);
Mat2.copyTo(newMat);
相关标签:
2条回答
  • 2020-12-31 23:52

    You can use push_back():

    newMat.push_back(Mat1);
    newMat.push_back(Mat2);
    
    0 讨论(0)
  • 2021-01-01 00:12

    It depends on what you want to add. For example, you have two 3x3 Mat:

    cv::Mat matA(3, 3, CV_8UC1, cv::Scalar(20));
    cv::Mat matB(3, 3, CV_8UC1, cv::Scalar(80));
    

    You can add matA and matB to a new 3x3 Mat with value 100 using matrix operation:

    auto matC = matA + matB;
    

    Or using array operation cv::add that does the same job:

    cv::Mat matD;
    cv::add(matA, matB, matD);
    

    Or even mixing two images using cv::addWeighted:

    cv::Mat matE;
    cv::addWeighted(matA, 1.0, matB, 1.0, 0.0, matE);
    

    Sometimes you need to merge two Mat, for example create a 3x6 Mat using cv::Mat::push_back:

    cv::Mat matF;
    matF.push_back(matA);
    matF.push_back(matB);
    

    Even merge into a two-channel 3x3 Mat using cv::merge:

    auto channels = std::vector<cv::Mat>{matA, matB};
    cv::Mat matG;
    cv::merge(channels, matG);
    

    Think about what you want to add and choose a proper function.

    0 讨论(0)
提交回复
热议问题