2010-01-08 59 views
7

我想使用OpenCV方法在視頻文件中進行背景減法。現在我可以做背景減法,但問題是我無法在彩色模式下獲得輸出。減去背景後,所有的輸出灰度色彩模式來:(,我想要得到的顏色信息,這是導致輸出背景得到扣除後的前景。它採用屏蔽技術使用OpenCV進行背景減法效果

我該怎麼辦? ?像下面的程序,我正在考慮

  1. 捕捉輸入 - InputFrame(RGB)
  2. 過程InputFrame
  3. 扣除背景,商店前景在TempFrame(在灰色到來規模:(
  4. 創建使用TempFrame
  5. 口罩創建的面膜適用於InputFrame
  6. 獲得彩色前景爲OutFrame

我打了做使用OpenCV的屏蔽。我只是OpenCV的初學者。請幫我解決這個問題。

在此先感謝。

回答

10

好吧,我不明白如果您使用背景減法TempFrame(您的前景)可能是灰度。您必須使用非常特殊的算法。但假設TempFrame是灰度,那麼你應該這樣做:

cv::Mat mask = tempFrame > 0.5; 

cv::Mat outFrame; 
capturedFrame.copyTo(outFrame, mask); 

這就是上面的OpenCV 2.0代碼。數字0.5是一個閾值,您需要將其設置爲適當的值。如果你不使用浮點圖像,你可能會將它設置爲128或類似的東西。這是OpenCV的1.1代碼同樣的事情:

CvMat* mask = cvCreateMat(tempFrame.rows, tempFrame.cols, CV_8UC1); 
cvCmpS(tempFrame, 0.5, mask); 

CvMat* outFrame = cvCreateMat(capturedFrame.rows, capturedFrames.cols, CV_32FC3); 
cvCopy(capturedFrame, outFrame, mask); 
+0

謝謝,但我仍然想知道爲什麼所有的例子和代碼爲BGS我遇到互聯網產生只有灰度輸出?無論如何..再次感謝。 – Jabez 2010-01-19 06:59:37

+0

哦好吧,我想這只是簡單的做灰度背景減法,所以也許這就是原因。 – 2010-01-19 09:34:28