-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest.py
113 lines (90 loc) · 3.93 KB
/
test.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
import cv2
import cv
import argparse
import json
import os
import numpy as np
import errno
from scipy.spatial import distance
def video_step_through(video_path):
cap = cv2.VideoCapture(video_path)
frame_count = cap.get(cv.CV_CAP_PROP_FRAME_COUNT),
cv2.namedWindow("Frame")
frame_number = 0
changeImage(cap, frame_number, frame_count)
faster_rate = 100
k = 'a'
while(k != 'q'):
# print 'hoh'
k = cv2.waitKey(1)
# print 'hah'
if k == ord('p'):
# if k == ord('2555904'):
frame_number += 1
changeImage(cap, frame_number, frame_count)
if k == ord('o'):
# if k == 2424832:
frame_number -= 1
changeImage(cap, frame_number, frame_count)
if k == ord('m'):
# if k == ord('2555904'):
frame_number += faster_rate
changeImage(cap, frame_number, frame_count)
if k == ord('n'):
# if k == 2424832:
frame_number -= faster_rate
changeImage(cap, frame_number, frame_count)
if k == ord('i'):
requested_frame = int(raw_input())
if requested_frame >= 0 and requested_frame <= cap.get(cv.CV_CAP_PROP_FRAME_COUNT): # And less than or equal to last frame
frame_number = requested_frame
changeImage(cap, frame_number, frame_count)
if k == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
def changeImage(cap, frame_number, frame_count):
if frame_number > frame_count:
print 'frame_no:', frame_number, ' > ', frame_count
return
cap.set(cv.CV_CAP_PROP_POS_FRAMES, frame_number)
ret, frame = cap.read()
if frame == None:
return
text = "frame_no: " + str(frame_number)
cv2.putText(frame, text, (0, 40), cv2.FONT_HERSHEY_SIMPLEX, 2.0, (255, 0, 255))
cv2.imshow('Frame', frame)
cv2.waitKey(1)
def optical_flow(video_path):
cap = cv2.VideoCapture(video_path)
ret, frame1 = cap.read()
prvs = cv2.cvtColor(frame1,cv2.COLOR_BGR2GRAY)
hsv = np.zeros_like(frame1)
hsv[...,1] = 255
while(1):
ret, frame2 = cap.read()
next = cv2.cvtColor(frame2,cv2.COLOR_BGR2GRAY)
#prev, next, scale, levels, winsize, ite, poly_n, poly_sigma
flow = cv2.calcOpticalFlowFarneback(prvs, next, 0.5, 1, 4, 3, 5, 1.1, cv2.OPTFLOW_FARNEBACK_GAUSSIAN)
# flow = cv2.calcOpticalFlowFarneback(prvs,next, None, 0.5, 3, 15, 3, 5, 1.2, 0)
mag, ang = cv2.cartToPolar(flow[...,0], flow[...,1])
hsv[...,0] = ang*180/np.pi/2
hsv[...,2] = cv2.normalize(mag,None,0,255,cv2.NORM_MINMAX)
bgr = cv2.cvtColor(hsv,cv2.COLOR_HSV2BGR)
cv2.imshow('optflow',bgr)
cv2.imshow('orig', frame2)
k = cv2.waitKey(30) & 0xff
if k == 27:
break
elif k == ord('s'):
cv2.imwrite('opticalfb.png',frame2)
cv2.imwrite('opticalhsv.png',bgr)
prvs = next
cap.release()
cv2.destroyAllWindows()
# optical_flow('/home/ben/VideoUnderstanding/example_images/Animals6mins/Animals6mins.mp4')
video_step_through('/home/ben/VideoUnderstanding/example_images/Best_of_2015_Cute_Funny_Animals/Best_of_2015_Cute_Funny_Animals.mp4')
# video_step_through('/home/ben/VideoUnderstanding/example_images/Best_WINFAIL_Compilation_2016__Funny_FAIL_and_WIN_Videos__January_2016/Best_WINFAIL_Compilation_2016__Funny_FAIL_and_WIN_Videos__January_2016.mp4')
# video_step_through('/home/ben/VideoUnderstanding/example_images/Funny_Videos_Of_Funny_Animals_NEW_2015/Funny_Videos_Of_Funny_Animals_NEW_2015.mp4')
# video_step_through('/home/ben/VideoUnderstanding/example_images/Montage_-_The_Best_of_YouTubes_Mishaps_Involving_Ice_Snow_Cars_and_People/Montage_-_The_Best_of_YouTubes_Mishaps_Involving_Ice_Snow_Cars_and_People.mp4')
# video_step_through('/home/ben/VideoUnderstanding/example_images/DogsBabies5mins/DogsBabies5mins.mp4')