Commit c391c7c9be8f53c127fb6ba5c5da210c586e4cf2

Authored by Austin Van Blanton
1 parent c2b1835e

Add DropFrames transform to skip frames in a video

Showing 1 changed file with 41 additions and 0 deletions
openbr/plugins/frames.cpp
... ... @@ -48,6 +48,47 @@ private:
48 48  
49 49 BR_REGISTER(Transform, AggregateFrames)
50 50  
  51 +/*!
  52 + * \ingroup transforms
  53 + * \brief Only use one frame every n frames.
  54 + * \author Austin Blanton \cite imaus10
  55 + *
  56 + * For a video with m frames, DropFrames will pass on m/n frames.
  57 + */
  58 +class DropFrames : public TimeVaryingTransform
  59 +{
  60 + Q_OBJECT
  61 + Q_PROPERTY(int n READ get_n WRITE set_n RESET reset_n STORED false)
  62 + BR_PROPERTY(int, n, 1)
  63 +
  64 +public:
  65 + DropFrames() : TimeVaryingTransform(false) {}
  66 +
  67 +private:
  68 + void train(const TemplateList &data)
  69 + {
  70 + (void) data;
  71 + }
  72 +
  73 + void projectUpdate(const Template &src, Template &dst)
  74 + {
  75 + if (src.file.get<int>("FrameNumber") % n != 0) return;
  76 + dst = src;
  77 + }
  78 +
  79 + void store(QDataStream &stream) const
  80 + {
  81 + (void) stream;
  82 + }
  83 +
  84 + void load(QDataStream &stream)
  85 + {
  86 + (void) stream;
  87 + }
  88 +};
  89 +
  90 +BR_REGISTER(Transform, DropFrames)
  91 +
51 92 } // namespace br
52 93  
53 94 #include "frames.moc"
... ...