将二进制阈值图像(CV_8UC1)插入彩色垫子的ROI(CV_8UC4)?

时间:2015-10-04 10:08:56

标签: opencv mat roi binary-image

我有一系列CV_8UC4类型的图像。它的高清尺寸为1280x720。 我正在图像的ROI上执行bgfg分段(特别是MOG2)。 算法结束后,我得到了ROI大小的二进制图像 键入CV_8UC1。 我想将这个二进制图像插回原始的大图像。我能怎么做 此?

这就是我正在做的事情(为了便于阅读,代码被简化了):

// cvImage is the big Mat coming from outside
cv::Mat roi(cvImage, cv::Rect(200, 200, 400, 400));
mog2 = cv::createBackgroundSubtractorMOG2();
cv::Mat fgMask;
mog2->apply(roi, fgMask); // Here the fgMask is the binary mat which corresponds to the roi size

那么,如何将fgMask插回原始图像? Hwo做这个CV_8UC1 - > CV_8UC4只转换为投资回报率?

谢谢。

1 个答案:

答案 0 :(得分:0)

您需要将fgMask设为4频道图片:

Mat4b fgMask4ch;
cvtColor(fgMask, fgMask4ch, COLOR_GRAY2BGRA);

然后将其复制到cvImage给出的正确位置的原始roi中:

fgMask4ch.copyTo(roi);