1

I am writing a small script (in Python) that generates and updates a running average of a camera feed. When I call cv.RunningAvg it returns:

cv2.error: func != 0

Where am I stumbling in implementing cv.RunningAvg? Script follows:

import cv
feed = cv.CaptureFromCAM(0)
frame = cv.QueryFrame(feed)
moving_average = cv.QueryFrame(feed)
cv.NamedWindow('live', cv.CV_WINDOW_AUTOSIZE)
def loop():
 frame = cv.QueryFrame(feed)
 cv.ShowImage('live', frame)
 c = cv.WaitKey(10)
 cv.RunningAvg(frame, moving_average, 0.020, None)
while True:
 loop()
asked Jul 19, 2012 at 13:28

1 Answer 1

12

I am not sure about the error, but check out the documentation for cv.RunningAvg

It says destination should be 32 or 64-bit floating point.

So I made a small correction in your code and it works. I created a 32-bit floating point image to store running average values, then another 8 bit image so that I can show running average image :

import cv2.cv as cv
feed = cv.CaptureFromCAM(0)
frame = cv.QueryFrame(feed)
moving_average = cv.CreateImage(cv.GetSize(frame),32,3) # image to store running avg
avg_show = cv.CreateImage(cv.GetSize(frame),8,3) # image to show running avg
def loop():
 frame = cv.QueryFrame(feed)
 c = cv.WaitKey(10)
 cv.RunningAvg(frame, moving_average, 0.1, None)
 cv.ConvertScaleAbs(moving_average,avg_show) # converting back to 8-bit to show
 cv.ShowImage('live', frame)
 cv.ShowImage('avg',avg_show)
while True:
 loop()
cv.DestroyAllWindows()

Now see the result :

At a particular instant, I saved a frame and its corresponding running average frame.

Original frame :

enter image description here

You can see the obstacle (my hand) blocks the objects in behind.

Now running average frame :

enter image description here

It almost removed my hand and shows objects in background.

That is how it is a good tool for background subtraction.

One more example from a typical traffic video :

enter image description here enter image description here

You can see more details and samples here : http://opencvpython.blogspot.com/2012/07/background-extraction-using-running.html

answered Jul 19, 2012 at 14:07

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.