summaryrefslogtreecommitdiff
path: root/test.py
diff options
context:
space:
mode:
authorFlorian Jung <flo@windfisch.org>2014-08-27 01:50:29 +0200
committerFlorian Jung <flo@windfisch.org>2014-08-27 01:50:29 +0200
commit28b48db87f8900e351a90ec6e9d815af8b5e8101 (patch)
treed74f91177adf17f6c6eee95239efe263ae93e82f /test.py
parenteffe56ffd6cecdfcbb0846c1298e4a20246086f2 (diff)
mv test.py stabilize.py
Diffstat (limited to 'test.py')
-rw-r--r--test.py101
1 files changed, 0 insertions, 101 deletions
diff --git a/test.py b/test.py
deleted file mode 100644
index 3692b2b..0000000
--- a/test.py
+++ /dev/null
@@ -1,101 +0,0 @@
-import cv2
-import math
-import numpy
-from math import sin,cos
-
-cap = cv2.VideoCapture("../vid.mp4")
-writer = cv2.VideoWriter("../outvid.avi",cv2.cv.CV_FOURCC(*'MP42'),25,(1600,600),1)
-
-###### CONFIG ######
-
-feature_params = dict( maxCorners = 100,
- qualityLevel = 0.3,
- minDistance = 20,
- blockSize = 7 )
-
-scale_factor=0.5
-scr_width=1600
-scr_height=600
-
-
-# Parameters for lucas kanade optical flow
-lk_params = dict( winSize = (15,15),
- maxLevel = 2,
- criteria = (cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_COUNT, 10, 0.03))
-
-
-
-
-###### INITALISATION ######
-
-ret,oldframe=cap.read()
-oldgray=cv2.cvtColor(oldframe,cv2.COLOR_BGR2GRAY)
-
-height, width, bpp = oldframe.shape
-
-mask = numpy.ones((height,width, 1), numpy.uint8) * 255
-screencontent = numpy.zeros((scr_height, scr_width,3), numpy.uint8)
-
-total_angle=0.
-total_x=1500
-total_y=-300
-
-while(cap.isOpened()):
- ret, frame = cap.read()
- gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
-
-
- # calculate movement, rotation and stretch. (we will ignore the stretch factor.)
- mat = cv2.estimateRigidTransform(gray,oldgray,False)
- angle = math.atan2(mat[0,1],mat[0,0])
- stretch = int((math.sqrt(mat[0,1]**2+mat[0,0]**2)-1)*100)
-
- # calculate shift_x and _y is if one would rotate-and-stretch around the center of the image, not the topleft corner
- shift_x = mat[0,2] - width/2 + ( mat[0,0]*width/2 + mat[0,1]*height/2 )
- shift_y = mat[1,2] - height/2 + ( mat[1,0]*width/2 + mat[1,1]*height/2 )
-
-
- # accumulate values
- total_x = total_x + shift_x
- total_y = total_y + shift_y
- total_angle=total_angle+angle
-
- print angle/3.141592654*180,'deg\t',stretch,"%\t", shift_x,'\t',shift_y
-
- # rotate and move current frame into a global context
- mat2=cv2.getRotationMatrix2D((width/2,height/2), total_angle/3.141593654*180, scale_factor)
- mat2[0,2] = mat2[0,2]+total_x*scale_factor
- mat2[1,2] = mat2[1,2]+total_y*scale_factor
-
-
- frame2= cv2.warpAffine(frame, mat2, (scr_width,scr_height) )
- mask2 = cv2.warpAffine(mask, mat2, (scr_width,scr_height) )
- ret, mask2 = cv2.threshold(mask2, 254, 255, cv2.THRESH_BINARY)
- mask3 = cv2.erode(mask2, numpy.ones((20,200),numpy.uint8)) # strip off the potentially-badlooking edges. left/right borders are darkened, strip them off
- mask4 = cv2.erode(mask2, numpy.ones((1,1),numpy.uint8))
-
- screencontent = cv2.bitwise_and(screencontent,screencontent, mask=cv2.bitwise_not(mask3)) # blank out
- screencontent = cv2.add(screencontent, cv2.bitwise_and(frame2,frame2,mask=mask3)) # and redraw
-
- screencontent2=screencontent.copy()
- screencontent2=cv2.bitwise_and(screencontent2,screencontent2, mask=cv2.bitwise_not(mask4))
- screencontent2=cv2.add(screencontent2, cv2.bitwise_and(frame2,frame2,mask=mask4))
-
- cv2.imshow('frame', frame)
- cv2.imshow('screencontent', screencontent)
- cv2.imshow('screencontent2', screencontent2)
-
- writer.write(screencontent2)
-
- oldframe=frame
- oldgray=gray
-
- key = cv2.waitKey(1) & 0xFF
- if key == ord("q"):
- break
-
- if key == ord("r"):
- total_angle=0.
- total_x=700
- total_y=-200
- screencontent = numpy.zeros((scr_height, scr_width,3), numpy.uint8)