Speed Up Optical Flow algorithm (If applicable) Python OpenCV
up vote
0
down vote
favorite
I came across this interesting situation (Speeding up optical flow (createOptFlow_DualTVL1)) but it doesn't apply to my needs. My general problem is I want to speed up as much as possible the following code if it is applicable. Keep in mind, I want the frames to be grayscale and resize them to height = 300
while keeping aspect ratio locked. Also, I want to sample 2 frames per second from that video so I assume every video to be around 30fps
. Finally, I want to use the TV-L1 optical flow algorithm. Is there a way to boost this algorithm because for a 1-minute video it takes around 3 minutes to estimate the optical flow which is too time-consuming for my needs.
Thanks in advance,
Evan
import math, imutils, cv2
print ("Entering Optical Flow Module...")
cap = cv2.VideoCapture(video_path)
current_framerate = cap.get(5)
ret, frame1 = cap.read()
prvs = cv2.cvtColor(frame1,cv2.COLOR_BGR2GRAY)
prvs = imutils.resize(prvs, height = 300)
all_frames_flow=list()
while(cap.isOpened()):
frameId = cap.get(1)
ret, frame2 = cap.read()
if ret == True:
if (frameId % (math.floor(current_framerate)/2)==0): # assume videos are 30 fps and we want only 2 frames per second.
next = cv2.cvtColor(frame2,cv2.COLOR_BGR2GRAY)
next = imutils.resize(next, height = 300)
optical_flow = cv2.DualTVL1OpticalFlow_create()
flow = optical_flow.calc(prvs, next, None)
all_frames_flow.append(flow)
prvs = next
else:
continue
else:
break
cap.release()
python algorithm opencv optimization opticalflow
add a comment |
up vote
0
down vote
favorite
I came across this interesting situation (Speeding up optical flow (createOptFlow_DualTVL1)) but it doesn't apply to my needs. My general problem is I want to speed up as much as possible the following code if it is applicable. Keep in mind, I want the frames to be grayscale and resize them to height = 300
while keeping aspect ratio locked. Also, I want to sample 2 frames per second from that video so I assume every video to be around 30fps
. Finally, I want to use the TV-L1 optical flow algorithm. Is there a way to boost this algorithm because for a 1-minute video it takes around 3 minutes to estimate the optical flow which is too time-consuming for my needs.
Thanks in advance,
Evan
import math, imutils, cv2
print ("Entering Optical Flow Module...")
cap = cv2.VideoCapture(video_path)
current_framerate = cap.get(5)
ret, frame1 = cap.read()
prvs = cv2.cvtColor(frame1,cv2.COLOR_BGR2GRAY)
prvs = imutils.resize(prvs, height = 300)
all_frames_flow=list()
while(cap.isOpened()):
frameId = cap.get(1)
ret, frame2 = cap.read()
if ret == True:
if (frameId % (math.floor(current_framerate)/2)==0): # assume videos are 30 fps and we want only 2 frames per second.
next = cv2.cvtColor(frame2,cv2.COLOR_BGR2GRAY)
next = imutils.resize(next, height = 300)
optical_flow = cv2.DualTVL1OpticalFlow_create()
flow = optical_flow.calc(prvs, next, None)
all_frames_flow.append(flow)
prvs = next
else:
continue
else:
break
cap.release()
python algorithm opencv optimization opticalflow
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I came across this interesting situation (Speeding up optical flow (createOptFlow_DualTVL1)) but it doesn't apply to my needs. My general problem is I want to speed up as much as possible the following code if it is applicable. Keep in mind, I want the frames to be grayscale and resize them to height = 300
while keeping aspect ratio locked. Also, I want to sample 2 frames per second from that video so I assume every video to be around 30fps
. Finally, I want to use the TV-L1 optical flow algorithm. Is there a way to boost this algorithm because for a 1-minute video it takes around 3 minutes to estimate the optical flow which is too time-consuming for my needs.
Thanks in advance,
Evan
import math, imutils, cv2
print ("Entering Optical Flow Module...")
cap = cv2.VideoCapture(video_path)
current_framerate = cap.get(5)
ret, frame1 = cap.read()
prvs = cv2.cvtColor(frame1,cv2.COLOR_BGR2GRAY)
prvs = imutils.resize(prvs, height = 300)
all_frames_flow=list()
while(cap.isOpened()):
frameId = cap.get(1)
ret, frame2 = cap.read()
if ret == True:
if (frameId % (math.floor(current_framerate)/2)==0): # assume videos are 30 fps and we want only 2 frames per second.
next = cv2.cvtColor(frame2,cv2.COLOR_BGR2GRAY)
next = imutils.resize(next, height = 300)
optical_flow = cv2.DualTVL1OpticalFlow_create()
flow = optical_flow.calc(prvs, next, None)
all_frames_flow.append(flow)
prvs = next
else:
continue
else:
break
cap.release()
python algorithm opencv optimization opticalflow
I came across this interesting situation (Speeding up optical flow (createOptFlow_DualTVL1)) but it doesn't apply to my needs. My general problem is I want to speed up as much as possible the following code if it is applicable. Keep in mind, I want the frames to be grayscale and resize them to height = 300
while keeping aspect ratio locked. Also, I want to sample 2 frames per second from that video so I assume every video to be around 30fps
. Finally, I want to use the TV-L1 optical flow algorithm. Is there a way to boost this algorithm because for a 1-minute video it takes around 3 minutes to estimate the optical flow which is too time-consuming for my needs.
Thanks in advance,
Evan
import math, imutils, cv2
print ("Entering Optical Flow Module...")
cap = cv2.VideoCapture(video_path)
current_framerate = cap.get(5)
ret, frame1 = cap.read()
prvs = cv2.cvtColor(frame1,cv2.COLOR_BGR2GRAY)
prvs = imutils.resize(prvs, height = 300)
all_frames_flow=list()
while(cap.isOpened()):
frameId = cap.get(1)
ret, frame2 = cap.read()
if ret == True:
if (frameId % (math.floor(current_framerate)/2)==0): # assume videos are 30 fps and we want only 2 frames per second.
next = cv2.cvtColor(frame2,cv2.COLOR_BGR2GRAY)
next = imutils.resize(next, height = 300)
optical_flow = cv2.DualTVL1OpticalFlow_create()
flow = optical_flow.calc(prvs, next, None)
all_frames_flow.append(flow)
prvs = next
else:
continue
else:
break
cap.release()
python algorithm opencv optimization opticalflow
python algorithm opencv optimization opticalflow
edited Nov 8 at 14:17
Vineeth Sai
2,27441023
2,27441023
asked Nov 8 at 13:49
Evan
277
277
add a comment |
add a comment |
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53209087%2fspeed-up-optical-flow-algorithm-if-applicable-python-opencv%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown