Efficient Background subtraction with OpenCV

Jabez picture Jabez · Jan 8, 2010 · Viewed 29.7k times · Source

I want to do background subtraction in a video file using OpenCV method. Right now I'm able to do background subtraction, but the problem is that I couldn't get the output in color mode. All the output after subtracting the background is coming in grayscale color mode :(. I want to get the color information to the foreground which is the resulting output after background got subtracted.

Can I do it using masking technique?? like the following procedure which I'm thinking about.

  1. Capture Input -- InputFrame (RGB)
  2. Process InputFrame
  3. Subtract background, store foreground in TempFrame (which is coming in grayscale :( )
  4. Create a mask using TempFrame
  5. Apply the created mask to the InputFrame
  6. Get colored foreground as OutFrame

I'm struck up with doing the masking using OpenCV. I'm just a very beginner in OpenCV. Please help me to overcome this.

Thanks in advance.

Answer

Birol Kuyumcu picture Birol Kuyumcu · Aug 15, 2011

http://vimeo.com/27477093

code is here

http://code.google.com/p/derin-deli-mavi/downloads/detail?name=denemeOpenCv23.zip&can=2&q=

to reach a colored foreground just copy image by using foreground mask

// image.copyTo(foreground,foreground);