2つのマットの内容を別のマットopencvc ++に追加します
2つの異なるMat
sの内容を他の1つのMat
に追加したいだけです。私は試した:
Mat1.copyTo(newMat);
Mat2.copyTo(newMat);
しかし、それはMat
の以前の内容を上書きしているように見えました。
これは簡単な質問かもしれませんが、私は迷子になっています。
それはあなたが何をしたいかによりますadd。たとえば、2つの3x3マットがあります。
cv::Mat matA(3, 3, CV_8UC1, cv::Scalar(20));
cv::Mat matB(3, 3, CV_8UC1, cv::Scalar(80));
行列演算 を使用して、値100の新しい3x3マットにmatA
とmatB
を追加できます。
auto matC = matA + matB;
または、配列操作を使用する cv :: add 同じ仕事をします:
cv::Mat matD;
cv::add(matA, matB, matD);
または mixing 2つの画像を使用して cv :: addWeighted :
cv::Mat matE;
cv::addWeighted(matA, 1.0, matB, 1.0, 0.0, matE);
2つのマットをマージする必要がある場合があります。たとえば、 cv :: Mat :: Push_back :を使用して3x6マットを作成します。
cv::Mat matF;
matF.Push_back(matA);
matF.Push_back(matB);
cv :: merge :を使用して2チャンネルの3x3マットにマージすることもできます。
auto channels = std::vector<cv::Mat>{matA, matB};
cv::Mat matG;
cv::merge(channels, matG);
追加したいものを考えて、適切な機能を選択してください。
Push_back()を使用できます。
newMat.Push_back(Mat1);
newMat.Push_back(Mat2);