2015-10-04 91 views
0

我有一個CV_8UC4類型的圖像序列。它的高清尺寸爲1280x720。 我在圖像的ROI上執行bgfg分段(MOG2專門)。 算法完成後,我得到了ROI大小的二進制圖像和 類型的CV_8UC1。 我想插入這個二進制圖像回原始的大圖像。我該怎麼辦 這個?將二進制閾值圖像(CV_8UC1)插入彩色墊子(CV_8UC4)的ROI中?

下面是我在做什麼(代碼簡化了可讀性的原因):

// 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回原來的形象呢? 要做這個CV_8UC1 - > CV_8UC4轉換僅適用於ROI嗎?

謝謝。

回答

0

你需要讓fgMask 4通道圖像:

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

,然後複製到原來的cvImage這在正確的位置,通過roi給出:

fgMask4ch.copyTo(roi); 
+0

賓果!謝謝! – Grigory