
VidGear: Video processing library for Python lovers - abhiTronix
https://github.com/abhiTronix/vidgear
======
y4mi
Haha, that example code made my day

    
    
      # check if frame is None
      if frame_stab is None:
        #if True break the infinite loop
        break
    

A single comment saying "continue if stream ends" would be much clearer

~~~
dr_zoidberg
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
`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
Also 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

        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):
    

wow, I did'nt knew about this. Thanks for posting. I'm definetly adding this
in the next release.

------
mathgenius
Pretty much every buzzword used halves my expectation that this code will
actually work... But I hope it does because this actually looks useful.

------
batt4good
This is awesome and I really hope it works. I still wonder how well it
actually performs though (assuming it actually works).

~~~
abhiTronix
Yup, It is all working, well-tested and under continuous development. If
still, something doesn't work for you then report an issue[1]. Goodluck.

[1]:
[https://github.com/abhiTronix/vidgear/issues/new/choose](https://github.com/abhiTronix/vidgear/issues/new/choose)

