-
Make show2 hide its window if finalize is called, also change the update image signal to a blocking type to allow this to work correctly (this will actually lock the frame rate of a stream to whatever speed qt can update windows at, so maybe should be optional) After calling VideoCapture::read, make a clone of the returned matrix since it has become clear that in at least some cases, the returned matrix is an alias of some internal buffer of the VideoCapture.
-
Move TimeInvariantTransformWrapper to openbr_internal.h, add a default way for composite transforms to handle const project calls when they have time-varying child transforms.
-
Rather than showing the (empty) window after init is called, wait until actually told to display an image to show the window.
-
-algorithm something[distribute=false] prevents the default DistributeTemplate from being prepended to the transform part of "something"
-
Give Distribute better support for handling timevarying transforms
-
Move CompositeTransform, and several other categorical abstract transform types to a new file, openbr_internal.h. Adjust files in plugins to include the new file rather than incldue openbr_plugin.h directly.
-
Introduce 'pseudocopy' operation which, which if called on a time-invariant transform, returns the transform, but if called on a time-varying transform returns a copy of the current state of the time-varying transform. Composite transforms apply pseudocopy to their children (if they contain any time-varying transforms). Introduce a wrapper class that uses Resource to let time-varying transforms act like time-invariant transforms, currently only used by distribute (it is assumed that any work that is being distributed is in fact independent).
-
This is currently implemented by an event filter on the QApplication, which isn't great, but I couldn't get a QShortcut to work.
-
Don't explicitly release the VideoCapture when it runs out of frames, further investigation is needed, but this seems to cause an overrun or something Additionally, make TemplateDataSource behave consistently with VideoDataSource, breaking only after getNext has been called when no further frames are available.
-
Since it's actually a distance, being named KeyPointMatcherTransform prevented name lookup from working correctly