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.
- Capture Input —
InputFrame(RGB) - Process
InputFrame - Subtract background, store foreground in
TempFrame(which is coming in grayscale 🙁 ) - Create a mask using
TempFrame - Apply the created mask to the
InputFrame - 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.
Okay, I don’t understand how TempFrame (your foreground) could be greyscale if you are using background subtraction. You must be using a very special algorithm. But assuming TempFrame is greyscale, then you would do this:
That is OpenCV 2.0 code above. The number 0.5 is a threshold, you’ll need to set it to something appropriate. If you’re not using floating-point images, you’d probably set it to 128 or something like that. This is the same thing in OpenCV 1.1 code: