parent
ff326988a5
commit
136d5b534a
1 changed files with 38 additions and 0 deletions
@ -0,0 +1,38 @@ |
|||||||
|
import numpy as np |
||||||
|
import cv2, cv |
||||||
|
import video |
||||||
|
import sys |
||||||
|
|
||||||
|
try: fn = sys.argv[1] |
||||||
|
except: fn = video.presets['chess'] |
||||||
|
|
||||||
|
cam = video.create_capture(fn) |
||||||
|
ret, prev = cam.read() |
||||||
|
#prev = cv2.pyrDown(prev) |
||||||
|
prevgray = cv2.cvtColor(prev, cv.CV_BGR2GRAY) |
||||||
|
|
||||||
|
def draw_flow(img, flow, step): |
||||||
|
h, w = img.shape[:2] |
||||||
|
y, x = map(np.ravel, np.mgrid[step/2:h:step, step/2:w:step]) |
||||||
|
f = flow[y,x] |
||||||
|
x1 = x + f[:,0] |
||||||
|
y1 = y + f[:,1] |
||||||
|
#lines = np.int32( np.vstack([x, y, x1, y1]).T ) |
||||||
|
vis = cv2.cvtColor(img, cv.CV_GRAY2BGR) |
||||||
|
#print lines |
||||||
|
#cv2.polylines(vis, lines, 0, (0, 255, 0)) |
||||||
|
for x_, y_, x1_, y1_ in np.int32(zip(x, y, x1, y1)): |
||||||
|
cv2.line(vis, (x_, y_), (x1_, y1_), (0, 255, 0)) |
||||||
|
return vis |
||||||
|
|
||||||
|
while True: |
||||||
|
ret, img = cam.read() |
||||||
|
#img = cv2.pyrDown(img) |
||||||
|
gray = cv2.cvtColor(img, cv.CV_BGR2GRAY) |
||||||
|
flow = cv2.calcOpticalFlowFarneback(prevgray, gray, 0.5, 3, 15, 3, 5, 1.2, 0) |
||||||
|
prevgray = gray |
||||||
|
|
||||||
|
cv2.imshow('flow', draw_flow(gray, flow, 16)) |
||||||
|
if cv2.waitKey(5) == 27: |
||||||
|
break |
||||||
|
|
Loading…
Reference in new issue