Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
Demo.py 2.22 KiB
import numpy as np
import cv2
import libbgs

## BGS Library algorithms
bgs = libbgs.FrameDifference()
#bgs = libbgs.StaticFrameDifference()
#bgs = libbgs.AdaptiveBackgroundLearning()
#bgs = libbgs.AdaptiveSelectiveBackgroundLearning()
#bgs = libbgs.DPAdaptiveMedian()
#bgs = libbgs.DPEigenbackground()
#bgs = libbgs.DPGrimsonGMM()
#bgs = libbgs.DPMean()
#bgs = libbgs.DPPratiMediod()
#bgs = libbgs.DPTexture()
#bgs = libbgs.DPWrenGA()
#bgs = libbgs.DPZivkovicAGMM()
#bgs = libbgs.FuzzyChoquetIntegral()
#bgs = libbgs.FuzzySugenoIntegral()
#bgs = libbgs.GMG() # if opencv 2.x
#bgs = libbgs.IndependentMultimodal()
#bgs = libbgs.KDE()
#bgs = libbgs.KNN() # if opencv 3.x
#bgs = libbgs.LBAdaptiveSOM()
#bgs = libbgs.LBFuzzyAdaptiveSOM()
#bgs = libbgs.LBFuzzyGaussian()
#bgs = libbgs.LBMixtureOfGaussians()
#bgs = libbgs.LBSimpleGaussian()
#bgs = libbgs.LBP_MRF()
#bgs = libbgs.LOBSTER()
#bgs = libbgs.MixtureOfGaussianV1() # if opencv 2.x
#bgs = libbgs.MixtureOfGaussianV2()
#bgs = libbgs.MultiCue()
#bgs = libbgs.MultiLayer()
#bgs = libbgs.PAWCS()
#bgs = libbgs.PixelBasedAdaptiveSegmenter()
#bgs = libbgs.SigmaDelta()
#bgs = libbgs.SuBSENSE()
#bgs = libbgs.T2FGMM_UM()
#bgs = libbgs.T2FGMM_UV()
#bgs = libbgs.T2FMRF_UM()
#bgs = libbgs.T2FMRF_UV()
#bgs = libbgs.VuMeter()
#bgs = libbgs.WeightedMovingMean()
#bgs = libbgs.WeightedMovingVariance()
#bgs = libbgs.TwoPoints()
#bgs = libbgs.ViBe()

video_file = "dataset/video.avi"

capture = cv2.VideoCapture(video_file)
while not capture.isOpened():
	capture = cv2.VideoCapture(video_file)
	cv2.waitKey(1000)
	print "Wait for the header"

pos_frame = capture.get(cv2.cv.CV_CAP_PROP_POS_FRAMES)
while True:
	flag, frame = capture.read()
	
	if flag:
		cv2.imshow('video', frame)
		pos_frame = capture.get(cv2.cv.CV_CAP_PROP_POS_FRAMES)
		#print str(pos_frame)+" frames"
		
		img_output = bgs.apply(frame)
		img_bgmodel = bgs.getBackgroundModel();
		
		cv2.imshow('img_output', img_output)
		cv2.imshow('img_bgmodel', img_bgmodel)

	else:
		capture.set(cv2.cv.CV_CAP_PROP_POS_FRAMES, pos_frame-1)
		print "Frame is not ready"
		cv2.waitKey(1000)
		# break
	
	if 0xFF & cv2.waitKey(10) == 27:
		break
	
	if capture.get(cv2.cv.CV_CAP_PROP_POS_FRAMES) == capture.get(cv2.cv.CV_CAP_PROP_FRAME_COUNT):
		break

cv2.destroyAllWindows()