我有一系列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只转换为投资回报率?
谢谢。
答案 0 :(得分:0)
您需要将fgMask
设为4频道图片:
Mat4b fgMask4ch;
cvtColor(fgMask, fgMask4ch, COLOR_GRAY2BGRA);
然后将其复制到cvImage
给出的正确位置的原始roi
中:
fgMask4ch.copyTo(roi);