"atomic bomb" commit. Reorganized OpenCV directory structure
This commit is contained in:
55
samples/python/fback.py
Normal file
55
samples/python/fback.py
Normal file
@@ -0,0 +1,55 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
from cv import *
|
||||
|
||||
class FBackDemo:
|
||||
def __init__(self):
|
||||
self.capture = CaptureFromCAM(0)
|
||||
self.mv_step = 16
|
||||
self.mv_scale = 1.5
|
||||
self.mv_color = (0, 255, 0)
|
||||
self.cflow = None
|
||||
self.flow = None
|
||||
|
||||
NamedWindow( "Optical Flow", 1 )
|
||||
|
||||
print( "Press ESC - quit the program\n" )
|
||||
|
||||
def draw_flow(self, flow, prevgray):
|
||||
""" Returns a nice representation of a hue histogram """
|
||||
|
||||
CvtColor(prevgray, self.cflow, CV_GRAY2BGR)
|
||||
for y in range(0, flow.height, self.mv_step):
|
||||
for x in range(0, flow.width, self.mv_step):
|
||||
fx, fy = flow[y, x]
|
||||
Line(self.cflow, (x,y), (x+fx,y+fy), self.mv_color)
|
||||
Circle(self.cflow, (x,y), 2, self.mv_color, -1)
|
||||
ShowImage("Optical Flow", self.cflow)
|
||||
|
||||
def run(self):
|
||||
first_frame = True
|
||||
|
||||
while True:
|
||||
frame = QueryFrame( self.capture )
|
||||
|
||||
if first_frame:
|
||||
gray = CreateImage(GetSize(frame), 8, 1)
|
||||
prev_gray = CreateImage(GetSize(frame), 8, 1)
|
||||
flow = CreateImage(GetSize(frame), 32, 2)
|
||||
self.cflow = CreateImage(GetSize(frame), 8, 3)
|
||||
|
||||
CvtColor(frame, gray, CV_BGR2GRAY)
|
||||
if not first_frame:
|
||||
CalcOpticalFlowFarneback(prev_gray, gray, flow,
|
||||
pyr_scale=0.5, levels=3, winsize=15,
|
||||
iterations=3, poly_n=5, poly_sigma=1.2, flags=0)
|
||||
self.draw_flow(flow, prev_gray)
|
||||
c = WaitKey(7)
|
||||
if c in [27, ord('q'), ord('Q')]:
|
||||
break
|
||||
prev_gray, gray = gray, prev_gray
|
||||
first_frame = False
|
||||
|
||||
if __name__=="__main__":
|
||||
demo = FBackDemo()
|
||||
demo.run()
|
Reference in New Issue
Block a user