我只想将2个不同的Mat
s的内容添加到另外1个Mat
。我试过了:
Mat1.copyTo(newMat);
Mat2.copyTo(newMat);
但这似乎覆盖了Mat
的先前内容。
这可能是一个简单的问题,但我迷失了。
答案 0 :(得分:23)
这取决于你想要添加的内容。例如,您有两个3x3 Mat:
cv::Mat matA(3, 3, CV_8UC1, cv::Scalar(20));
cv::Mat matB(3, 3, CV_8UC1, cv::Scalar(80));
您可以使用matrix operation将matA
和matB
添加到值为100的新3x3相册中:
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);
考虑要添加的内容并选择合适的功能。
答案 1 :(得分:6)
您可以使用push_back():
newMat.push_back(Mat1);
newMat.push_back(Mat2);