Python opencv background subtraction

前端 未结 1 1378
渐次进展
渐次进展 2020-12-18 15:21

What I need to do is fairly simple:

1- load a 5 frames video file
2- detect background
3- On every frames, one by one :
-- 1- subtract background (crea

相关标签:
1条回答
  • 2020-12-18 16:08

    As bikz05 suggested, running average method worked pretty good on my 5 images sets. Thanks for the tip !

    import cv2
    import numpy as np
    
    c = cv2.VideoCapture('test.avi')
    _,f = c.read()
    
    avg1 = np.float32(f)
    avg2 = np.float32(f)
    
    # loop over images and estimate background 
    for x in range(0,4):
        _,f = c.read()
    
        cv2.accumulateWeighted(f,avg1,1)
        cv2.accumulateWeighted(f,avg2,0.01)
    
        res1 = cv2.convertScaleAbs(avg1)
        res2 = cv2.convertScaleAbs(avg2)
    
        cv2.imshow('img',f)
        cv2.imshow('avg1',res1)
        cv2.imshow('avg2',res2)
        k = cv2.waitKey(0) & 0xff
        if k == 5:
            break
    
    0 讨论(0)
提交回复
热议问题