【问题标题】:Add the contents of 2 Mats to another Mat opencv c++将2个Mats的内容添加到另一个Mat opencv c++
【发布时间】:2015-04-19 19:59:26
【问题描述】:

我只想将 2 个不同的 Mats 的内容添加到另外 1 个 Mat。我试过了:

Mat1.copyTo(newMat);
Mat2.copyTo(newMat);

但这似乎覆盖了Mat 之前的内容。

这可能是一个简单的问题,但我迷路了。

【问题讨论】:

  • 试试newMat = Mat1+Mat2;

标签: c++ opencv mat


【解决方案1】:

这取决于你想添加什么。例如,您有两个 3x3 Mat:

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

您可以使用matrix operationmatAmatB 添加到值为100 的新3x3 Mat:

auto matC = matA + matB;

或者使用数组操作cv::add做同样的工作:

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

甚至mixing两张图片使用cv::addWeighted

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

有时您需要合并两个 Mat,例如使用 cv::Mat::push_back 创建一个 3x6 Mat:

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

甚至使用cv::merge 合并成一个双通道 3x3 Mat:

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

考虑一下您要添加的内容并选择合适的功能。

【讨论】:

    【解决方案2】:

    你可以使用 push_back():

    newMat.push_back(Mat1);
    newMat.push_back(Mat2);
    

    【讨论】:

      猜你喜欢
      • 2017-05-30
      • 1970-01-01
      • 2023-03-10
      • 2018-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-08
      • 2014-05-26
      相关资源
      最近更新 更多