4 ms·
I really dislike how OpenCV handles reading frames from a video file, leaving up to the developer the responsibility of checking if it's None or not (or the sta
by dr_zoidberg 7y ago
I really dislike how OpenCV handles reading frames from a video file, leaving up to the developer the responsibility of checking if it's None or not (or the status) -- the whole thing feels wrong in Python.
It's actually super simple to write a wrapper around it that lets you do:
for frame in video:
# your processing comes here and you forget
# having to check for None, while True s and things
# that should've stayed in the stone age
And I'm a little disappointed the posted library doesn't do it.
- compressedgas 7y ago`iter` can be used to convert from a repeated function call with a sentinel to an iterator: for frame_stab, frame_org in zip(iter(stream_stab.read, None), iter(stream_org.read, None)): ... This line replaces the first 12 lines of the loop in the example.
- BiteCode_dev 7y agoAlso a good example where 3.8 would be handy: while (frame_stab := stream_stab.read()) and (stream_org := stream_org.read()): iter() works with all stable versions of Python though, but it's a bit exotic. When I use it, I tend to make aliases to make it clearer because most Python devs don't know about it, let alone this alternative form. stab_frames = iter(stream_stab.read, None) org_frames = iter(stream_org.read, None) for frame_stab, frame_org in zip(stab_frames, org_frames):
- abhiTronix 7y agostab_frames = iter(stream_stab.read, None) org_frames = iter(stream_org.read, None) for frame_stab, frame_org in zip(stab_frames, org_frames): wow, I did'nt knew about this. Thanks for posting. I'm definetly adding this in the next release.